欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

html5使用canvas实现图片下载功能的示例代码

程序员文章站 2023-12-04 14:54:16
这篇文章主要介绍了html5使用canvas实现图片下载功能的示例代码,非常具有实用价值,需要的朋友可以参考下... 17-08-26...

最近项目中需要实现一个下载图片的功能(如下图)

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';
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。