html5使用canvas实现图片下载功能的示例代码


Posted in HTML / CSS onAugust 26, 2017

最近项目中需要实现一个下载图片的功能(如下图)

html5使用canvas实现图片下载功能的示例代码

一开始考虑使用a标签的download属性进行下载:

<a href="图片src" download="下载海报">
下载海报
</a>

但是通过测试,发现再safari中,下载的文件不能带上拓展名,所以只好换一个思路,使用canvas进行处理。

1.图片需要添加crossOrigin='anonymous'设置图像的跨域属性

img.crossOrigin = 'anonymous';

2.使用toDataURL把图片转换成base64格式

canvas.toDataURL("image/png")

3.使用模拟点击事件,触发下载

var save_link = document.createElement('a');
     save_link.href = image;
     save_link.download ='测试.png';
                           
 var clickevent = document.createEvent('MouseEvents');
     clickevent.initEvent('click', true, false);
     save_link.dispatchEvent(clickevent);

完整代码:

var canvas = $('.canvas');
var cxt = canvas[0].getContext("2d");
function save(){
    var img = new Image();
    img.crossOrigin = 'anonymous';
    img.onload = function(){
        var _w = img.naturalWidth;
        var _h = img.naturalHeight;
        canvas.attr({width:_w,height:_h});
        cxt.drawImage(img,0,0);
        var image = canvas[0].toDataURL("image/png")
        var save_link = document.createElement('a');
        save_link.href = image;
        save_link.download ='测试.png';
                           
       var clickevent = document.createEvent('MouseEvents');
           clickevent.initEvent('click', true, false);
           save_link.dispatchEvent(clickevent);
    };
    img.src = 'http://n.sinaimg.cn/sports/transform/20170825/NZI3-    fykiufe6650492.jpg';
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
animation和transition的区别
Oct 12 HTML / CSS
HTML5探秘:用requestAnimationFrame优化Web动画
Jun 03 HTML / CSS
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
Jan 30 HTML / CSS
html5画布旋转效果示例
Jan 27 HTML / CSS
HTML5+CSS3应用详解
Feb 24 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
Mar 26 HTML / CSS
详解HTML5中的元素与元素
Aug 17 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 HTML / CSS
canvas绘制太极图的实现示例
Apr 29 HTML / CSS
HTML5实现移动端点击翻牌功能
Oct 23 HTML / CSS
css如何把元素固定在容器底部的四种方式
Jun 16 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
Aug 28 #HTML / CSS
html5使用html2canvas实现浏览器截图的示例
Aug 31 #HTML / CSS
前端面试必备之html5的新特性
Sep 05 #HTML / CSS
html5仿支付宝密码框的实现代码
Sep 06 #HTML / CSS
HTML5 本地存储实现购物车功能
Sep 07 #HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
Sep 12 #HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
Sep 12 #HTML / CSS
You might like
PHP也可以?成Shell Script
2006/10/09 PHP
mysql5写入和读出乱码解决
2006/11/25 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
JavaScript 事件系统
2010/07/22 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python绘制雷达图实例讲解
2021/01/03 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
恒华伟业笔试面试题
2015/02/26 面试题
2014年安全员工作总结
2014/11/13 职场文书
董存瑞观后感
2015/06/11 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
小学六年级毕业感言
2015/07/30 职场文书
六年级作文之自救
2019/12/19 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python