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实现鼠标悬停提示气泡效果
Feb 28 HTML / CSS
CSS3改变浏览器滚动条样式
Jan 04 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
Apr 24 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
Aug 07 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
Nov 07 HTML / CSS
HTML5语音识别标签写法附图
Nov 18 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
Sep 21 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
Mar 25 HTML / CSS
HTML5通用接口详解
Jun 12 HTML / CSS
简单实现一个手持弹幕功能+文字抖动特效
Mar 31 HTML / CSS
sass 常用备忘案例详解
Sep 15 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
php微信开发之图片回复功能
2018/06/14 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
vue实现分页组件
2020/06/16 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
一篇不错的Python入门教程
2007/02/08 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
Python 爬虫的原理
2020/07/30 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
岗位竞聘书范文
2014/03/31 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server