Может ли эта библиотека определить, находится ли JPG в формате RGB или CMYK?

Спасибо за библиотеку извлечения метаданных, это действительно полезно. Он дает мне всю необходимую информацию, кроме того, является ли JPG форматом RGB или CMYK. Информация там и я просто ее не вижу, или эта библиотека не возвращает этот атрибут?

Спасибо

1 ответ

Решение

Из этого документа в пакете Java ImageIO:

https://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html

При чтении содержимое потока интерпретируется обычными соглашениями JPEG следующим образом:

  • Если присутствует сегмент маркера JFIF APP0, известно, что цветовое пространство является либо полутоновым, либо YCbCr. Если также присутствует сегмент маркера APP2, содержащий встроенный профиль ICC, то YCbCr преобразуется в RGB в соответствии с формулами, приведенными в спецификации JFIF, и предполагается, что профиль ICC ссылается на результирующее пространство RGB.

  • Если присутствует сегмент маркера Adobe APP14, цветовое пространство определяется с помощью флага преобразования. Флаг преобразования принимает одно из трех значений:

    • 2 - изображение кодируется как YCCK (неявно преобразуется из CMYK при кодировании).
    • 1 - изображение кодируется как YCbCr (неявно преобразуется из RGB при кодировании).
    • 0 - неизвестно. 3-канальные изображения предполагаются как RGB, 4-канальные изображения предполагаются как CMYK.
  • Если ни один из сегментов маркера не присутствует, выполняется следующая процедура: одноканальные изображения предполагаются в оттенках серого, а 2-канальные изображения предполагаются в оттенках серого с альфа-каналом. Для 3- и 4-канальных изображений используются идентификаторы компонентов. Если эти значения равны 1-3 для 3-канального изображения, то предполагается, что это изображение YCbCr. При условии наличия дополнительной поддержки цветового пространства, описанной выше, если эти значения 1-4 для 4-канального изображения, то предполагается, что изображение является YCbCrA. Если эти значения> 4, они проверяются по кодам ASCII для "R", "G", "B", "A", "C", "c". Они могут кодировать следующие цветовые пространства:

    • RGB
    • RGBA
    • YCC (как "Y", "C", "c"), предполагается, что PhotoYCC
    • YCCA (как "Y", "C", "c", "A"), предположительно PhotoYCCA

В противном случае 3-канальные субсэмплированные изображения предполагаются как YCbCr, 3-канальные не субсэмплированные изображения предполагаются как RGB, 4-канальные субсэмплированные изображения предполагаются как YCCK, а 4-канальные не субсэмплированные изображения предполагаются как CMYK.

Все остальные изображения объявлены не интерпретируемыми.

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

Другие вопросы по тегам