Получить данные изображения из (blob) из тега img (метод, противоположный URL.createObjectURL)

Внутри моего HTML-кода у меня есть следующий тег IMG:

<img src="picture.png"  id="picture" />

Я хотел бы создать в образе объект Blob (https://developer.mozilla.org/en-US/docs/Web/API/Blob) (чтобы использовать его в дальнейшем в веб-активности FirefoxOS), имеющий свой uri ("picture.png"). Думаю, мне нужен метод, который работает противоположно URL.createObjectURL:

https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL


person bluszcz    schedule 14.04.2014    source источник


Ответы (2)


Fetch API теперь подходит, как используется в документах:

Using_Fetch#Checking_that_the_fetch_was_successful

https://developer.mozilla.org/en-US/docs/Web/API/Body/blob

Просто:

fetch("picture.png")
.then(res => res.blob())
.then(blob => {
    // use blob...
});
person Lyall    schedule 12.03.2019
comment
Это не будет работать для запросов разных источников из-за политики CORS. - person ionescho; 12.05.2020

Если вам не нужна побайтовая копия изображения (например, если вы не возражаете, что jpg преобразуется в png), вы можете нарисовать изображение на <canvas> и использовать .toBlob(), чтобы получить blob для Это.

Если вам нужны исходные данные в виде большого двоичного объекта или если изображение размещено в другом источнике, вы можете использовать код по адресу https://stackoverflow.com/a/21136980 (для запросов с одинаковым источником просто используйте x.open('GET', 'picture.png');).

person Rob W    schedule 14.04.2014