如何运用html5 canvas将图片保存至手机本地的图库中?

想做一个移动端的简单画板,当图片绘制好了后,点击保存时该如何让图片存储在本地图库里?

addEvent(save,'click',function(){
        var dataImg = canvas.toDataURL('image/png');
        var w=window.open('about:blank','image from canvas'); 
            w.document.write("<img src='"+dataImg+"' alt='from canvas'/>"); 
    })

这样写他只会另开新的窗口浏览,而不会存储或者下载,是不是要实现存储到手机图库中只能调用系统的原生API接口吗?各位有没有什么好的解决方法;
有考虑用a标签然后加上属性download,在浏览器上可以,用UC和QQ浏览器则没有效果。。。
用UC测试的时候右键另存是发现图片背景是透明的,有没有什么方法给图片加上背景色的?

<a href="javascript:void(0)" id="save" download="tupian">保存</a>

   function touchend(e){
        var dataImg = canvas.toDataURL('image/png');
        save.setAttribute('href',dataImg);
    }
阅读 15.1k
4 个回答

没有这权限和功能

使用 "blob" 二进制大对象

我在浏edge浏览器可以实现下载,如果是手机或其他浏览器,API可能不同,详见代码

var bb = new MSBlobBulider();
//此API名称可能不同

bb.apend("1234");
//在这里 append 要保存的数据

var b = bb.getBlob();
//得到 blob 对象

navigator.msSaveBlob(b,"a.txt");
//保存,设置文件名,此API名称可能不同

clipboard.png

这个你肯定需要调用 手机的api了,就是用类似 phonegap 这类的库

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题