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的新特性介绍
Oct 31 HTML / CSS
一款css实现的鼠标经过按钮的特效
Sep 11 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
May 03 HTML / CSS
animation和transition的区别
Oct 12 HTML / CSS
详解CSS3:overflow属性
Nov 17 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
Mar 25 HTML / CSS
Bootstrap 学习分享
Nov 12 HTML / CSS
Canvas与Image互相转换示例代码
Aug 09 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
Mar 14 HTML / CSS
HTML5 textarea高度自适应的两种方案
Apr 08 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
Apr 15 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
Sep 08 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连接SQLServer2005 的问题解决方法
2010/07/19 PHP
PHP header函数分析详解
2011/08/06 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
PHP 图片处理
2020/09/16 PHP
解密效果
2006/06/23 Javascript
Prototype使用指南之range.js
2007/01/10 Javascript
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
实时获取Python的print输出流方法
2019/01/07 Python
python二维图制作的实例代码
2020/12/03 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
一道Delphi上机题
2012/06/04 面试题
小区门卫岗位职责
2013/12/31 职场文书
党校培训自我鉴定
2014/02/01 职场文书
实验室的标语
2014/06/20 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers