[英]Converting image to base64 gives the same output on every image (JavaScript)
I'm trying to encode image with base64 like this: 我正在尝试使用base64编码图像,如下所示:
var image = localStorage.getItem("image");
alert(image);
function readImage(url, callback) {
var request = new
XMLHttpRequest(); request.onload = function () {
var file = new FileReader();
file.onloadend = function () {
callback(file.result);
}
file.readAsDataURL(request.response);
};
request.open('GET', url);
request.responseType = 'blob';
request.send();
}
readImage(image, function (base64) {
localStorage.setItem("Base64", base64);
});
var base64_2 = localStorage.getItem("Base64");
It gives me the same base64 output on every picture link I get from localStorage (Checked it, the images from localStorage are different). 在我从localStorage获得的每个图片链接上,它给我提供了相同的base64输出(选中它,来自localStorage的图像是不同的)。
What is the problem? 问题是什么?
You are not getting base64
because of Async
code inside readImage
. 由于
readImage
的Async
代码,您没有得到base64
。 XMLHttpRequest
and FileReader
both works in Async
manner due to this your bottom code execute first after that It will come in callback
XMLHttpRequest
和FileReader
都以Async
方式工作,这是因为您的最低代码将在此之后首先执行,它将进入callback
readImage(image, function (base64) {
localStorage.setItem("Base64", base64);
successHandler(); //successHandler will call when callback return base64 after processing
});
function successHandler(){
var base64_2 = localStorage.getItem("Base64");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.