javascript - canvas下载图片到本地报错
天蓬老师
天蓬老师 2017-04-11 11:13:10
[JavaScript讨论组]
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <canvas id="canvas1"></canvas>
    <br /><br />
    <input type="button" value="保存png图片" id="btn1" />
    <a href="javascript:" id="down">下载</a>
</body>
<script>
    function draw(){
            var ctx=document.getElementById('canvas1').getContext('2d');
            var img=new Image();
            img.onload=function(){
                ctx.drawImage(img,0,0);
                ctx.beginPath();
            ctx.stroke();
        }
        img.src='btnNews.png';
    }
    draw();
    var canvas = document.getElementById('canvas1');
    //绑定下载事件
    var btn = document.getElementById('btn1');
    btn.onclick = function () {
        var type = 'png';
        download(type);
    }
    //图片下载操作,指定图片类型
    function download(type) {
        //设置保存图片的类型
        var imgdata = canvas.toDataURL(type);
        document.getElementById('down').href=imgdata;
        console.log(imgdata)
        //将mime-type改为image/octet-stream,强制让浏览器下载
        var fixtype = function (type) {
            type = type.toLocaleLowerCase().replace(/jpg/i, 'jpeg');
            var r = type.match(/png|jpeg|bmp|gif/)[0];
            return 'image/' + r;
        }
        imgdata = imgdata.replace(fixtype(type), 'image/octet-stream')
        //将图片保存到本地
        var saveFile = function (data, filename) {
            var link = document.createElement('a');
            link.href = data;
            link.download = filename;
            var event = document.createEvent('MouseEvents');
            event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            link.dispatchEvent(event);
        }
        var filename = new Date().toLocaleDateString() + '.' + type;
        saveFile(imgdata, filename);
    }
</script>
</html>



天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
高洛峰

var imgdata = canvas.toDataURL(type);
改为
var imgdata = canvas.toDataURL('image/' + type);

巴扎黑

谢邀~

我这里测试没报错, 什么浏览器?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号