// Simulate a call to Dropbox or other service that can | |
// return an image as an ArrayBuffer. | |
var xhr = new XMLHttpRequest(); | |
// Use JSFiddle logo as a sample image to avoid complicating | |
// this example with cross-domain issues. | |
xhr.open( "GET", "http://fiddle.jshell.net/img/logo.png", true ); | |
// Ask for the result as an ArrayBuffer. | |
xhr.responseType = "arraybuffer"; | |
xhr.onload = function( e ) { | |
// Obtain a blob: URL for the image data. | |
var arrayBufferView = new Uint8Array( this.response ); | |
var blob = new Blob( [ arrayBufferView ], { type: "image/jpeg" } ); | |
var urlCreator = window.URL || window.webkitURL; | |
var imageUrl = urlCreator.createObjectURL( blob ); | |
var img = document.querySelector( "#photo" ); | |
img.src = imageUrl; | |
}; | |
xhr.send(); |
https://jsfiddle.net/b8d9032s/2/
changed http:// to https:// to avoid chrome problems
Thanks a lot!
Don't forget to call revokeObjectURL() after onload fires to free up the memory used to create the blob URL.
Please note this method does not convert a PNG image into a JPG. In order to do so, you have to put the image in a <canvas>
and export it using .toDataURI
or .toBlob
(not always possibile, as the image must have the same origin) using 'image/jpeg'
as the output format.
I know this isn't the reason of this gist, just warning other passers-by who may get confused.
Thank you
Thank you very much ;)
very useful. thank you so much for sharing
Thanks a lot, man! You do saved a lot of my life-time ))))
awesome, thanks!
i was hoping there was another way to do this...
thanks for your solution, anyways...
but it's exactly what i feared needed to be done...
i feel like i'm being punished for NOT wanting to just throw all my files SEPARATELY on some server >.<
thanks a lot man
You are best!
Worked like a charm!
Thanks a lot!
Thank you.
love you
love you
Thanks a lot!
Thanks a Lot for this, I was wondering about the Int8Array, Uint8Array, Int16Array fetched in the response data object. Is there a difference ?
Thanks man. This really saved me. I have a questions. Why does this example use XMLHttpRequest instead of fetch()? I'm assuming that is because the example was written 9 year ago but maybe there is another reason?
Thanks for this!
Is wrapping this.response
into Uint8Array
necessary? Doc says that ArrayBuffer can also be used as blob part.
Thank you man