• 技术文章 >web前端 >html教程

    实例详解html5使用canvas实现图片下载功能

    巴扎黑巴扎黑2017-09-02 10:01:55原创1698
    这篇文章主要介绍了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';
    }

    以上就是实例详解html5使用canvas实现图片下载功能的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:canvas html5 h5
    上一篇:html5+CSS3+JS七夕告白功能实现详解 下一篇:详解HTML5如何操作WebSQL数据库
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 新手的成长记录点滴(十)_html/css_WEB-ITnose• tomcat 服务器全解_html/css_WEB-ITnose• 对于DIV+CSS的开发方式,我们也要听听另外的声音.(转贴)_html/css_WEB-ITnose• 面向对象_基于原型链实现继承• jquery的表单操作
    1/1

    PHP中文网