html5图片长按保存,一文彻底解决HTML5页面中长按保存图片功能
$.fn.longPress = function(fn) {
let timeout = 0;
const $this = this;
for (let i = 0; i < $this.length; i++) {
$this[i].addEventListener('touchstart', () => {
timeout = setTimeout(fn, 800); // 長按時間超過800ms,則執行傳入的方法
}, false);
$this[i].addEventListener('touchend', () => {
clearTimeout(timeout); // 長按時間少于800ms,不會執行傳入的方法
}, false);
}
};
$('img').longPress(() => {
saveImg();
});saveImg() {
// 想要保存的圖片節點
const dom = document.querySelector('img');
// 創建一個新的canvas
const Canvas = document.createElement('canvas');
const width = document.body.offsetWidth; // 可見屏幕的寬
const height = document.body.offsetHeight; // 可見屏幕的高
const scale = window.devicePixelRatio; // 設備的devicePixelRatio
// 將Canvas畫布放大scale倍,然后放在小的屏幕里,解決模糊問題
Canvas.width = width * scale;
Canvas.height = height * scale;
Canvas.getContext('2d').scale(scale, scale);
html2canvas(dom, {
canvas: Canvas,
scale,
useCORS: true,
logging: true,
width: width + 'px',
hegiht: height + 'px',
}).then((canvas) => {
const context = canvas.getContext('2d');
// 關閉抗鋸齒形
context.mozImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.msImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
// canvas轉化為圖片
const img = canvas2Image(canvas, canvas.width, canvas.height);
document.body.appendChild(img);
img.style.cssText = "width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;";
}
}
canvas2Image(canvas, width, height) {
const retCanvas = document.createElement('canvas');
const retCtx = retCanvas.getContext('2d');
retCanvas.width = width;
retCanvas.height = height;
retCtx.drawImage(canvas, 0, 0, width, height, 0, 0, width, height);
const img = document.createElement('img');
img.src = retCanvas.toDataURL('image/jpeg'); // 可以根據需要更改格式
return img;
}
總結
以上是生活随笔為你收集整理的html5图片长按保存,一文彻底解决HTML5页面中长按保存图片功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 条件控制(if ) ( case)
- 下一篇: 2017年html5行业报告,云适配发布