为什么我不能从Javascript将图像源设置为blob?

时间:2016-03-29 23:58:41

标签: javascript jquery html image blob

我正在尝试使用Javascript LoadImage库(https://github.com/blueimp/JavaScript-Load-Image)从文件加载图像。

load方法返回一个图像对象,其src设置为某个blob对象:

<img src="blob:http%3A//localhost%3A3577/902d4e78-2e3e-467c-99ce-6683db24996e" width="960" height="540">

如果我将此元素追加到DOM,它会很好地显示出来。但是,根据我的需要,我只需要图像数据,而不是DOM对象。我需要获取该数据并将另一个现有元素src设置为该数据。所以,就像任何理智的人一样,我得到返回的对象的srcblob:http%3A//localhost%3A3577/902d4e78-2e3e-467c-99ce-6683db24996e),获取对我现有的图像DOM对象(下面名为img)的引用,并使用jQuery ,设置其src:

img.attr('src', src);

这导致我现有的图像对象变为:

<img src="blob:http%3A//localhost%3A3577/902d4e78-2e3e-467c-99ce-6683db24996e">

是的,完全相同(期望明确的widthheight属性,我也尝试添加,这些属性一无所获。但是现在的标签不是图像,而是显示破损的图像:

enter image description here

为什么以及如何使用相同src的图像标签,一个可以显示图像而另一个不能?

1 个答案:

答案 0 :(得分:3)

这很可能是由于LoadImage库调用URL.revokeObjectURL()以释放分配的图像。

尝试specify noRevoke选项。