Javascript 使用base64对图像进行编码/解码
我正在尝试对图像进行编码和解码。我正在使用FileReader的readAsDataURL方法将图像转换为base64。然后,为了将其转换回来,我尝试使用Javascript 使用base64对图像进行编码/解码,javascript,fileapi,Javascript,Fileapi,我正在尝试对图像进行编码和解码。我正在使用FileReader的readAsDataURL方法将图像转换为base64。然后,为了将其转换回来,我尝试使用readAsBinaryString()和atob(),但运气不佳。有没有其他方法可以在不使用base64编码的情况下保存图像 readAsBinaryString() 开始读取指定Blob的内容,该Blob可能是 文件读取操作完成后,readyState将变为 完成,并且将调用onloadend回调(如果有)。在那 同时,result属性包含
readAsBinaryString()
和atob()
,但运气不佳。有没有其他方法可以在不使用base64编码的情况下保存图像
readAsBinaryString()
开始读取指定Blob的内容,该Blob可能是
文件读取操作完成后,readyState将变为
完成,并且将调用onloadend回调(如果有)。在那
同时,result属性包含文件中的原始二进制数据
知道我做错了什么吗
示例代码
谢谢 需要a(可以是a)作为其参数。不是一串。这就是URL.createObjectURL(文件)
工作的原因
相反,您正在创建一个将
文件
读取为数据url的读取器
,然后使用该数据url创建另一个Blob
(具有相同的内容)。然后您甚至可以创建一个reader2
,从刚刚构建的blob
中获取一个二进制字符串。但是,base64Image
url字符串部分(即使btoa
-解码为更大的字符串)和decoded.binary
字符串都不是url.createObjectURL
的有效参数 经过进一步的研究,我从
我基本上需要将原始二进制文件包装在arraybuffer中,并将二进制字符转换为Unicode
这是丢失的代码
var binaryImg = atob(base64Image);
var length = binaryImg.length;
var ab = new ArrayBuffer(length);
var ua = new Uint8Array(ab);
for (var i = 0; i < length; i++) {
ua[i] = binaryImg.charCodeAt(i);
}
var binaryImg=atob(base64Image);
变量长度=二进制长度;
var ab=新阵列缓冲(长度);
var ua=新的UINT8阵列(ab);
对于(变量i=0;i
完整的示例代码是,此示例在哪个浏览器中工作?TypeError:encodedFile.srcElement未定义我正在使用Chrome进行测试,但我需要它在最新的Android和iOS浏览器中工作。是否可以将
base64Image
转换回原始文件?我基本上是在尝试撤销reader.readAsDataURL(文件)代码>使用readAsBinaryString()
或atob()
var blob=new blob([base64Image],{type:“image/jpeg”})执行代码>应该这样做吗?尝试URL.createObjectURL(blob)代码>它显示了URL.createObjectURL(blob)的断开图像代码>我在这里更新了JSFIDLE,下面是一个显示损坏图像的屏幕。
var binaryImg = atob(base64Image);
var length = binaryImg.length;
var ab = new ArrayBuffer(length);
var ua = new Uint8Array(ab);
for (var i = 0; i < length; i++) {
ua[i] = binaryImg.charCodeAt(i);
}