最近琢磨想在移动端实现点击按钮保存图片的功能。

在网上搜了好久,发现普遍的方法是:html2canvas.js实现把html转图片,canvas2image.js则实现图片的下载。

把网上的案例套用之后发现html转图片没啥问题,但是到了下载图片一堆bug啊,ios浏览器点击下载都是直接到一个图片的链接,再手动长按保存。安卓跟ios在微信打开都是'点击下载'是完全没反应啊,老爹。这样就玩不了了

查看 微信sdk 后发现:

  • downloadImage 仅支持 uploadImage 接口上传的图片。
  • uploadImage 接口仅支持 chooseImage 接口相册选择的图片。
  • chooseImage 接口是从本地相册选择图片。

以上问题都是移动端会出现的bug,PC端是完全正常的,但是没用啊,这功能就移动端用得多。

最后我觉得取个折中的办法是最好的,只做点击生成图片,然后提示用户长按保存,有点截图的意思。毕竟所有浏览器都有个长按图片保存的功能的。觉得这样对用户不友好?  没办法了,你们继续琢磨,有更好的方法也让我参考一下。

引用html2canvas会遇到两个比较明显的问题:1,不能保存渲染的图片。2,保存的图片模糊。

其实这个也很容易解决,设置下参数就可以,代码里有注释。

html:

<body><section id="content"><img class="bg" src="https://m.qcwoshou.com/084087ec-ecb4-4bdf-be11-68bcbdb868a8.jpg" alt="" /><p>昵称:<span>caicaicai</span></p><p>个签:<span>Hello world</span></p><img class="icon" src="http://cdnzzz.vcgeek.cn/forward@2x.png" alt="" /></section><div class="btnSave"><button onclick="saveImg()">生成图片(第一步)</button><button onclick="download()">下载(第二步)</button></div><div id='photoPic' class="photoPic"><span>长按保存图片</span><div class="imgbox"><i>X</i><img src="" alt="" /></div></div><div id="images"></div>
</body>

script:

<script>/** div转成canvas图形,canvas转base64*/function saveImg(){html2canvas($("#content"), {useCORS: true, //(图片跨域相关)allowTaint: false, //允许跨域(图片跨域相关)dpi: 300,//设置生成图片清晰度//scale: window.devicePixelRatio*2 // 默认值是window.devicePixelRatio(设备像素比)onrendered: function(canvas) {$("#photoPic img").attr("src",canvas.toDataURL());$("#photoPic").fadeIn();$("#photoPic").addClass("animate");//用于点击'下载'按钮canvas.setAttribute('id','thecanvas');document.getElementById('images').appendChild(canvas);}});}$(".imgbox i").click(function(){$("#photoPic").hide();});</script>
<script>/** 下载图片*/function download(){var oCanvas = document.getElementById("thecanvas");// 获取图片资源var img_data1 = Canvas2Image.saveAsPNG(oCanvas, true).getAttribute('src');saveFile(img_data1, 'abc');}// 保存文件函数var saveFile = function(data, filename){var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');save_link.href = data;save_link.download = filename;var event = document.createEvent('MouseEvents');event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);save_link.dispatchEvent(event);};
</script>

完整dome下载地址:

https://download.csdn.net/download/caimingxian401/10879462

实际用的时候,还是会遇到很多坑,有过不去的坎可以留下评论,看到就回

H5点击生成图片dome相关推荐

  1. android点击按钮打开一个网页,Android实现H5点击打开app或跳转指定界面

    Android实现H5点击打开app或跳转指定界面 本文原创,转载请注明出处.欢迎关注我的 简书. 安利一波我写的开发框架:MyScFrame喜欢的话就给个Star 场景 H5界面中的入口 有时候为了 ...

  2. h5页面保存img_从微信H5点击保存图片说起

    微信H5里保存图片,大都是通过长按操作,弹起actionsheet保存照片.但我们的部分用户是老年群体,不知道怎么进行"长按"操作.考虑到这个因素,产品要求实现点击保存按钮来保存图 ...

  3. h5 html页面生成图片

    h5 html页面生成图片 引入html2canvas.min.js <div class="success_content"><!--页面生成图片存放--> ...

  4. h5端点击复制分享链接

    功能实现: 运用原生js实现H5 网页点击复制来分享链接功能 一:进行组件事件,传参pcUrl <view class="share" @click="handle ...

  5. 关于H5页面中生成图片的两种方式!

    前言: 我们在做项目过程中,经常会遇到自定义生成一张图片并可以长按保存.长按保存图片在微信等浏览器中默认就有,那么对于生成图片的有哪些方式呢? 方法一: 利用canvas绘制图形,然后生成图片 代码如 ...

  6. 微信公众号H5点击图片预览(可放大缩小),用微信内置jssdk实现

    在微信公众号H5里面可能会遇到点击图片预览,还可以放大缩小,微信内置有这个功能可以实现 用vue写项目的话,先 cnpm install weixin-js-sdk --save 接着给图片一个点击事 ...

  7. uni-app开发h5点击跳转到h5,微信小程序跳转到h5

    <imageclass="tvcBu"@click="toUrl"mode="aspectFit"src="../../st ...

  8. 微信小程序嵌套h5页面,h5页面返回小程序,小程序和h5的页面和交互方法,h5点击分享小程序页面

    相信大家在做小程序的时候有些需求会需要嵌套h5页面 正常的h5页面嵌套很简单就是一个web-view然后放入h5链接就可以了 <web-view src="http://www.goo ...

  9. js+css制作导航栏下划线跟随动画,App+H5点击效果

    这是使用Vue制作的一个下划线跟随效果,没有使用其他插件 目录 1. 制作一个初始的导航栏 2. 增加点击样式 3. 下划线移动 最终代码 注意事项 这是最终效果↓ 一开始从网上查其他人的做法,大部分 ...

最新文章

  1. C++虚继承(十) --- 谈谈陈皓遗留的问题
  2. springboot + ApplicationListener
  3. js Date对象总结
  4. Mysql存储结构B树与B+树与索引
  5. 使用ArrayList时设置初始容量的重要性
  6. 统计学第一章--最小二乘拟合正弦函数,正则化
  7. 谁顶住双11的世界级流量洪峰?神龙架构负责人等9位大牛现场拆解阿里秘籍
  8. Java实训项目12:GUI学生信息管理系统 - 实现步骤 - 创建服务接口实现类
  9. mysql倒叙varchar类型的数字_MySql遇到varchar字段数字字符串排序问题
  10. ASP.NET CORE MVC 2.0 发布到IIS 配置问题
  11. linux下查看共享文件夹,在Linux下查看共享文件夹
  12. 盘点13个值得程序员逛的论坛
  13. 用Racket做一个拼图游戏-01
  14. python_lintcode_52翻转字符串_128哈希函数
  15. hwaddr和macaddr的区别
  16. 工作绩效数据 工作绩效报告 偏差分析 变更控制流程 变更控制委员会
  17. 使用Cerebro管理ES集群
  18. MySQL高可用方案
  19. 海思视频和QT的Colorkey显示模式
  20. 通过Gartner 2018年新兴技术成熟度曲线解读大数据人工智能技术的发展

热门文章

  1. 西门子博图指令(位逻辑运算指令一)
  2. 微信小程序开发及相关设置小结
  3. Vue制作静态页面--Day03
  4. DA14585 官网例程 读取I2C加速度计并发送通知数据--I2C_Accel_Data_Notiifcation 分析
  5. 快速给数据库大表添加字段或索引方法
  6. 黑裙安装linux环境,黑裙安装
  7. 2022年海南最新建筑八大员(标准员)模拟考试试题及答案
  8. 我想为我们的团队起个名字,我们主要是开发游戏的,中英文都要一个名字
  9. Blender图解教程:洋葱皮插件Ghostool
  10. 微软Novell公布合作技术细节 将优化各自产品