如何将加载的图像读入blob?

Gaj*_*jus 5 javascript html5

可能重复:
如何将图像对象转换为二进制blob

加载远程图像时,我面临同源策略限制.但是DOM 0 Image对象可用于加载远程资源(这与创建<img />标记基本相同).

var fr = new FileReader(),
    img = new Image();

img.src = 'http://distilleryimage8.s3.amazonaws.com/6cf25568491a11e2af8422000a9e28e9_7.jpg';

img.onload = function () {
    // how to get this image as a Blob object?
};
Run Code Online (Sandbox Code Playgroud)

有没有办法将此资源读入Blob/arraybuffer对象?这不是如何将图像对象转换为二进制blob的重复,因为后者不会出现同源问题.

Min*_*hev 2

在我看来,这可以在没有太多痛苦的情况下完成......

您只需要再添加一个 HTML5 元素。使用时canvas可以在其上绘制远程图像。之后获取图像 dataUrl 就非常容易了,您可以从画布的 API 中获得这样的功能。下一步是使用 FileReader 的readAsDataURL方法。

我没有尝试过,但理论上它应该有效。

  • 编辑:这不会起作用。如果图像来自不同的来源,则不能使用 canvas 的toDataURL方法。所以我认为没有服务器端就没有任何解决方案。