我正在尝试对图像进行编码和解码。我正在使用FileReader的readAsDataURL方法将图像转换为base64。然后,我尝试使用readAsBinaryString()和atob()来将其转换回来,但没有成功。是否有其他方法可以持久化图像而无需对它们进行base64编码?
“readAsBinaryString()”开始读取指定Blob(可能是文件)的内容。当读取操作完成时,readyState将变为DONE,并且将调用onloadend回调函数(如果有)。此时,结果属性包含文件中的原始二进制数据。
这里我做错了什么?
示例代码 http://jsfiddle.net/qL86Z/3/
“readAsBinaryString()”开始读取指定Blob(可能是文件)的内容。当读取操作完成时,readyState将变为DONE,并且将调用onloadend回调函数(如果有)。此时,结果属性包含文件中的原始二进制数据。
这里我做错了什么?
示例代码 http://jsfiddle.net/qL86Z/3/
$("#base64Button").on("click", function () {
var file = $("#base64File")[0].files[0]
var reader = new FileReader();
// callback for readAsDataURL
reader.onload = function (encodedFile) {
console.log("reader.onload");
var base64Image = encodedFile.srcElement.result.split("data:image/jpeg;base64,")[1];
var blob = new Blob([base64Image],{type:"image/jpeg"});
var reader2 = new FileReader();
// callback for readAsBinaryString
reader2.onloadend = function(decoded) {
console.log("reader2.onloadend");
console.log(decoded); // this should contain binary format of the image
// console.log(URL.createObjectURL(decoded.binary)); // Doesn't work
};
reader2.readAsBinaryString(blob);
// console.log(URL.createObjectURL(atob(base64Image))); // Doesn't work
};
reader.readAsDataURL(file);
console.log(URL.createObjectURL(file)); // Works
});
谢谢!