【发布时间】:2015-06-21 01:47:05
【问题描述】:
我正在尝试将图像(链接)转换为 base64 以便能够存储在浏览器端(IndexedDB)中,但我无法做到这一点,我已经寻找解决方案好几天了,我没有解决我的问题。
在这个很棒的代码中,我能够将图像从 Internet 转换为 Base64,但问题是由于同源策略,我无法对 Internet 上的其他图像执行此操作。
我将如何避免该问题,或者如果您知道将图像转换为 Base64 的任何其他解决方案,那将非常有帮助
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);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="output"> <img> </div>
【问题讨论】:
-
此代码似乎将图像转换为 base64 没有任何错误。您面临的确切错误/问题是什么?
-
您应该尝试从网络上获取另一张图片以了解错误,无论如何感谢您的评论
-
我尝试使用来自谷歌搜索的随机图片 url 以及来自本地服务器的图片,并且没有错误,这就是为什么问。
-
试试这张图片
http://www.pariskop.fr/wp-content/uploads/2014/12/psg-revons-plus-grand1.jpg -
我得到了错误。我认为如果没有服务器的某种支持,就无法直接或通过
XMLHttpRequest访问图像。可能是this 帮助您了解原因
标签: javascript html image base64