繁体   English   中英

将图像转换为base64可以在每个图像上提供相同的输出(JavaScript)

[英]Converting image to base64 gives the same output on every image (JavaScript)

我正在尝试使用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");

在我从localStorage获得的每个图片链接上,它给我提供了相同的base64输出(选中它,来自localStorage的图像是不同的)。

问题是什么?

由于readImageAsync代码,您没有得到base64 XMLHttpRequestFileReader都以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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM