我正在通过XMLHttpRequest以二进制格式从我的服务器加载jpeg图像(我需要这样)。它不是base64编码的。
是否可以使用javascript将其变为img对象?
由于
答案 0 :(得分:4)
如果XMLHttpRequest
的字符编码设置为something that won't change the binary data,或者您已set the response type,则可以.responseText
通过btoa
(将它放在base64中,让你将其分配为数据URI)或分别访问.response
二进制数据。
假设您的实例名为xhr
并且您在xhr.send
之前使用了charset方法但在xhr.open
之后
xhr.overrideMimeType("text/plain; charset=x-user-defined");
然后当你200 OK
var dataURI = 'data:image/jpeg;base64,' + btoa(xhr.responseText);
然后您可以将其设置为<img>
的 src 。
再次假设xhr
,这次是.response
方法;在.open
和.send
之间,
xhr.responseType = "arraybuffer";
然后在200 OK
var arrayBufferView = new Uint8Array(xhr.response), // can choose 8, 16 or 32 depending on how you save your images
blob = new Blob([arrayBufferView], {'type': 'image\/jpeg'}),
objectURL = window.URL.createObjectURL(blob);
然后您可以将其设置为<img>
的 src 。 Example