Не используйте BlobBuilder в Chrome (протестировано в OSX Chrome, Firefox 12, Safari 6, iOS Chrome, iOS Safari):
ex1: http://jsfiddle.net/malraux/xGUsu/ (принцип)
ex2: http://jsfiddle.net/xGUsu/78/ (работа с полным примером)
var xhr = new XMLHttpRequest();
xhr.open('GET', 'doodle.png', true);
xhr.responseType = 'arraybuffer';
// Process the response when the request is ready.
xhr.onload = function(e) {
if (this.status == 200) {
// Create a binary string from the returned data, then encode it as a data URL.
var uInt8Array = new Uint8Array(this.response);
var i = uInt8Array.length;
var binaryString = new Array(i);
while (i--)
{
binaryString[i] = String.fromCharCode(uInt8Array[i]);
}
var data = binaryString.join('');
var base64 = window.btoa(data);
document.getElementById("myImage").src="data:image/png;base64," + base64;
}
};
xhr.send();
Примечание : На данный момент этот код старше 7 лет. Хотя он все еще должен работать в большинстве браузеров, вот обновленная версия, основанная на предложении @TypeError, которое работать только в более современных браузерах с возможным исключением iOS Safari (который может поддерживать или не поддерживать responseType = 'blob'
- обязательно проверьте!):
var xhr = new XMLHttpRequest();
xhr.open('get', 'doodle.png', true);
// Load the data directly as a Blob.
xhr.responseType = 'blob';
xhr.onload = () => {
document.querySelector('#myimage').src = URL.createObjectURL(this.response);
};
xhr.send();