怎么实现HTML5页面中长按保存图片功能
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"怎么实现HTML5页面中长按保存图片功能",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么实现HTML5页面中长按保存图片功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2026年11月03日怎么实现HTML5页面中长按保存图片功能
本文小编为大家详细介绍"怎么实现HTML5页面中长按保存图片功能",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么实现HTML5页面中长按保存图片功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
下面是详细的步骤:
1. html2canvas截屏
保存的图片节点最好是img标签: 想要截屏的节点最好是img标签的图片,经测试如果是 background-image 会有点模糊,需要特别注意下。
npm i html2canvas --saveimport html2canvas from 'html2canvas';// 想要保存的图片节点const dom = document.querySelector('img');// 创建一个新的canvasconst Canvas = document.createElement('canvas');const width = document.body.offsetWidth; // 可见屏幕的宽const height = document.body.offsetHeight; // 可见屏幕的高const scale = window.devicePixelRadio; // 设备的devicePixelRadio// 将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转化为图片 canvas2Image(canvas, canvas.width, canvas.height);});2. canvas2Image转化为图片
一般情况下转为jpeg格式就很不错了。
canvas2Image(canvas, canvas.width, canvas.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;}3. 长按保存图片
先实现一个长按的方法,长按之后把生成的图片append到body,透明浮在屏幕上。
// 封装一个长按方法longPress(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); }}// 添加生成的图片到bodyconst 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;";4. 完整代码如下
$.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页面中长按保存图片功能"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
图片
屏幕
方法
时间
节点
功能
页面
文章
格式
内容
最好
标签
步骤
画布
设备
锯齿
问题
生成
不错
妥当
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
互联网 卓越科技
南京欣网互联网科技
电子科技大学互联网
润盈互联网科技
互联网科技有限公司 翻译
科技大学互联网专业好不好
南山科技园互联网公司有哪些
互联网软件和科技
新兴科技互联网创新大赛颁奖典礼
想开互联网科技公司怎么样
天津腾达互联网科技有限公司
燊美集互联网科技有限公司
内蒙古九一互联网科技
互联网在线教育科技创业
深圳互联网科技的发展
中天科技中国工业互联网
互联网相关科技技术
福建互联网展示科技馆设计
瑞安市蟠桃会互联网科技有限公司
互联网最新的科技
厦门中拓互联网络科技有限公司
科技互联网技术
远拓互联网科技
互联网科技英文翻译
互联网科技中介
互联网时代科技改变生活
江苏互联网智能科技软件
互联网科技手机排行榜
武汉亿视互联网科技有限公司