到 Blob 的数据 URI 会损坏映像
Data URI To Blob Corrupts Image
我已经看到了很多关于这个问题的帖子和许多答案,但我不能完全让它工作。
我有一个画布,我将其保存到 base 64 编码图像中,效果很好。
capture: function(callback) {
var ctx, imgData, src;
ctx = canvas.getContext("2d");
ctx.drawImage(video, 0, 0, video.width, video.height);
imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
ctx.putImageData(imgData, 0, 0);
src = canvas.toDataURL("image/jpeg");
return src;
}
然后,我可以将图像 src 设置为 base 64 编码字符串,一切正常。 当我尝试将其转换为 blob 以便下载它时,下载的文件将无法作为图像格式读取。
saveImage: function(dataURI) {
var ab, bb, blob, byteString, i, ia, mimeString, _i, _len;
if (dataURI.split(',')[0].indexOf('base64') >= 0) {
byteString = atob(dataURI.split(',')[1]);
} else {
byteString = unescape(dataURI.split(',')[1]);
}
mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
ab = new ArrayBuffer(byteString.length);
ia = new Uint8Array(ab);
for (_i = 0, _len = byteString.length; _i < _len; _i++) {
i = byteString[_i];
ia[i] = byteString.charCodeAt(i);
}
bb = new BlobBuilder();
bb.append(ab);
blob = bb.getBlob(mimeString);
return saveAs(blob);
}
所有这些代码对我来说似乎都很好,但是生成的文件在下载时未被识别为有效图像。
我有一种感觉,我在数据 url 中有转义错误,但我找不到在哪里。
我正在使用Chrome Canary进行开发。
读取位置 _i
处的字符代码,而不是i
。
ia[_i] = byteString.charCodeAt(_i);
相关文章:
- 如何使jQuery中的悬停函数单独应用于数据库映像
- 无法在Safari中加载跨源映像(来自CloudFront)
- 有没有一种方法可以从chrome'的存储映像
- 如何在不必维护每个文件的两个版本的情况下,将通用JavaScript和映像部署到两个不同的EAR
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 获取我的数组中的每个 ID 映像 src
- 映像选取器在初始化时预选项
- 循环映像 IE7 问题
- 本地映像对象未在Javascript中正确初始化
- PHP抓取没有扩展的远程映像
- 如何在ASP.NET Response.BinaryWrite生成的Javascript中处理字节数组映像
- JQuery Error在出现错误时加载备用映像的事件
- 要映像的 Blob URL
- appendChild dataURI映像到window.open在IE中失败
- 在MySQL中存储映像路径与使用<img src=“"onError=“">
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- 到 Blob 的数据 URI 会损坏映像
- 服务器上的映像和 Javascript 损坏.仅在本地工作
- base64 映像已损坏上传到 S3
- Base64映像下载:损坏的文件