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 相关文章推荐
详解CSS3中字体平滑处理和抗锯齿渲染
Mar 29 HTML / CSS
css3中flex布局宽度不生效的解决
Dec 09 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
Jan 05 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
Mar 07 HTML / CSS
HTML5本地数据库基础操作详解
Apr 26 HTML / CSS
Html5实现用户注册自动校验功能实例代码
May 24 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
Jun 30 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 HTML / CSS
钉钉企业内部H5微应用开发详解
May 12 HTML / CSS
详解CSS故障艺术
May 25 HTML / CSS
关于CSS浮动与取消浮动的问题
Jun 28 HTML / CSS
CSS 实现Chrome标签栏的技巧
Aug 04 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
php图片缩放实现方法
2014/02/20 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python占位符输入方式实例
2019/05/27 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
2015新年寄语大全
2014/12/08 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python