Реконструировать исходные 16-битные необработанные пиксельные данные из холста HTML5.

Если 16-битные одноканальные (оттенки серого) необработанные пиксельные данные без потерь закодированы в формат изображения (например, PNG, Webp, Jpeg-2000 или JPEG-XR) и изображение, отрендеренное на холсте HTML5, то есть ли способ получить исходный 16 -bit Необработанные пиксельные данные с холста?


person Kalpesh Mahajan    schedule 14.04.2017    source источник
comment
Вы нашли ответ на это?   -  person Fapaz    schedule 02.09.2020


Ответы (1)


No.

При рисовании на холст изображение не сжимается, а все данные пикселей предварительно умножаются и преобразуются в 24-битные данные + 8-битный альфа-канал (RGBA).
В этом процессе изображение теряет все из оригинал, даже для исходного изображения с одинаковой глубиной цвета из-за различных ошибок округления (см. отпечатки пальцев холста).

Таким образом, даже форматы без потерь плохо смотрятся на холсте.

Если вам нужны необработанные данные, вам нужно будет написать анализатор самостоятельно и обрабатывать файлы изображений напрямую как arrayBuffer.

person Kaiido    schedule 14.04.2017
comment
Согласовано. Но я провел несколько тестов, таких как преобразование 8-битных монохромных и RGB-изображений в PNG и рендеринг их на холст. Затем после извлечения с использованием API getImageData выдает 32-битный RGBa (необработанные данные изображения). При сравнении с исходным необработанным изображением (конечно, игнорируя альфа-канал в случае RGB и беря только пиксельные данные одного канала в случае 8-битного монохромного изображения), оно фактически совпадало. Однако исходные необработанные значения пикселей изображения являются только целыми числами. Есть ли шансы, что результирующее изображение будет другим в указанном случае? - person Kalpesh Mahajan; 17.04.2017