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的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
CSS3打造磨砂玻璃背景效果
Sep 28 HTML / CSS
浅谈CSS3鼠标移入图片动态提示效果(transform)
Nov 06 HTML / CSS
css3 中translate和transition的使用方法
Mar 26 HTML / CSS
HTML5实现QQ聊天气泡效果
Jun 26 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
Aug 08 HTML / CSS
canvas拼图功能实现代码示例
Nov 21 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 HTML / CSS
HTML5图片层叠的实现示例
Jul 07 HTML / CSS
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
Apr 13 HTML / CSS
html5实现点击弹出图片功能
Jul 16 HTML / CSS
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
Sep 23 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
简单讲解Python中的闭包
2015/08/11 Python
python字符串连接方法分析
2016/04/12 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
婚庆公司的创业计划书
2014/01/22 职场文书
五好党支部事迹材料
2014/02/06 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
离婚财产处理协议书
2014/09/30 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
出纳岗位职责
2015/01/31 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
销售会议开幕词
2016/03/04 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis