12

我正在通过 XMLHttpRequest 从我的服务器以二进制格式加载 jpeg 图像(我需要这种方式)。它不是 base64 编码的。

是否可以使用 javascript 将其转换为 img 对象?

谢谢

4

1 回答 1

6

如果 的字符编码XMLHttpRequest已设置为不会更改二进制数据的内容,或者您​​已设置响应类型.responseText,则可以运行btoa(将其放入 base64 并让您将其分配为数据 URI)或分别访问.response二进制数据。


假设您的实例已命名xhr,并且您在do之前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>.


再次假设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>. 例子

于 2012-12-10T20:04:10.153 回答