2 回答
TA贡献1836条经验 获得超3个赞
我最终回答了我自己的问题。解决方案是首先将Base64数据URI映像转换为BLOB。为此,我使用了以下自定义函数:
function dataURItoBlob( dataURI ) {
// Convert Base64 to raw binary data held in a string.
var byteString = atob(dataURI.split(',')[1]);
// Separate the MIME component.
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
// Write the bytes of the string to an ArrayBuffer.
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
// Write the ArrayBuffer to a BLOB and you're done.
var bb = new Blob([ab]);
return bb;
}
var image = dataURItoBlob( img.src );
Drewness的建议也有效,但是我更喜欢我的方法,因为canvas.toBlob()不返回值。
TA贡献1853条经验 获得超6个赞
您可以使用将其转换为Blob canvas.toBlob。这就是FileSaver的.saveAs功能。
var canvas = document.querySelector("#capture");
canvas.toBlob(function (blob) {
zip.file('file2.jpg', blob);
});
有趣的是,canvas.toBlob并非所有浏览器都支持HTML5 。在帆布toBlob.js是这一个跨浏览器的填充工具。
添加回答
举报