Постепенный рендеринг прогрессивных изображений в HTML5 Canvas

Есть ли способ нарисовать частично загруженные объекты прогрессивного изображения (PNG, JPG) на холсте?

Большинство браузеров поддерживают прогрессивную загрузку в теге, но я не могу найти, как ею можно управлять внутри холста.


person seva.lapsha    schedule 31.01.2013    source источник


Ответы (2)


Ответ - нет, согласно заказам спецификации.

Если браузер делает это, это противоречит спецификации, которая гласит:

Если изображение еще не полностью декодировано, то ничего не рисуется.

Когда элемент img находится в полностью доступном состоянии и пользовательский агент может декодировать мультимедийные данные без ошибок, тогда говорят, что элемент img полностью декодируемый.

person Simon Sarris    schedule 01.02.2013
comment
Увы. До этого случая у меня сложилось впечатление, что Canvas во всех аспектах является расширением HTML с точки зрения функциональности. Я ошибался. - person seva.lapsha; 30.10.2013

Вы можете взглянуть на библиотеку streamingtexture js, в которой используется пользовательское декодирование прогрессивных изображений JPEG (через версию Emscripten для libjpeg) и возвращать содержимое изображения в виде массива байтов.

Этот метод используется с WebGL, но может также использоваться для 2D-холста и расширен для поддержки GIF, PNG и WebP.

person mems    schedule 11.03.2014