在 Javascript/Jquery 中将 URL 图像转换为 Base64 或 Blob 的简单方法

Str*_* B. 8 javascript jquery base64 image

我正在为一个简单的应用程序使用离线模式,并且我正在使用 Indexeddb(PounchDB 作为库),我需要将图像转换为 Base64 或 BLOB 才能保存它。

我试过这段代码只适用于一个图像(提供的图像)我不知道为什么它不适用于任何其他图像:

function convertImgToBase64URL(url, callback, outputFormat){
    var img = new Image();
    img.crossOrigin = 'Anonymous';
    img.onload = function(){
        var canvas = document.createElement('CANVAS'),
        ctx = canvas.getContext('2d'), dataURL;
        canvas.height = img.height;
        canvas.width = img.width;
        ctx.drawImage(img, 0, 0);
        dataURL = canvas.toDataURL(outputFormat);
        callback(dataURL);
        canvas = null; 
    };
    img.src = url;
}
convertImgToBase64URL('http://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png', function(base64Img){
alert('it works');
      $('.output').find('img').attr('src', base64Img);  
   
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="output"> <img> </div>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但只有一个图像,如果我尝试任何其他图像,它不起作用

ade*_*neo 4

您使用的图像具有 CORS 标头

Accept-Ranges : bytes
Access-Control-Allow-Origin : * // this one
Age : 69702
Connection : keep-alive
Run Code Online (Sandbox Code Playgroud)

这就是为什么它可以在这样的画布中进行修改。
其他没有 CORS 标头的图像受同源策略约束,并且无法以这种方式在画布中加载和修改。