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 相关文章推荐
支持IE8的纯css3开发的响应式设计动画菜单教程
Nov 05 HTML / CSS
实例教程 纯CSS3打造非常炫的加载动画效果
Nov 05 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
Jan 04 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
Feb 26 HTML / CSS
html5指南-2.如何操作document metadata
Jan 07 HTML / CSS
html5使用canvas绘制一张图片
Dec 15 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
Aug 16 HTML / CSS
记一次高分屏下canvas模糊问题
Feb 17 HTML / CSS
详解Html5项目适配系统深色模式方案总结
Apr 14 HTML / CSS
面试必问:圣杯布局和双飞翼布局的区别
May 13 HTML / CSS
css3带你实现3D转换效果
Feb 24 HTML / CSS
HTML基本元素标签介绍
Feb 28 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爬取天猫和淘宝商品数据
2018/02/23 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
python实现二维数组的对角线遍历
2019/03/02 Python
django删除表重建的实现方法
2019/08/28 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
协议书范本
2014/04/23 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
旷工检讨书1000字
2015/01/01 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
《绝招》教学反思
2016/02/20 职场文书