Конвертация цветового пространства для JPEG с использованием профилей ICC

Управление цветом для формата JPEG

Эта статья обсуждает использование ICC профилей для управления цветовым пространством при работе с форматом JPEG с помощью API Aspose.PSD. Внутреннее цветовое пространство JPEG - YCbCr, однако данный формат также может вмещать цветовые пространства Grayscale, RGB, CMYK и YCCK для хранения метаданных изображения. API Aspose.PSD в основном работает в цветовом пространстве RGB, поэтому API должен выполнять конвертацию цветового пространства в обе стороны, чтобы правильно обрабатывать файлы JPEG. Преобразование из Grayscale в RGB и из YCbCr в RGB можно выполнить с помощью математических преобразований, но цветовые пространства CMYK и YCCK не могут быть легко преобразованы в цветовое пространство RGB.

API Aspose.PSD должен выполнять прямое преобразование цвета из RGB в CMYK для изображений JPEG с цветовым пространством CMYK. С другой стороны, изображения с цветовым пространством YCCK требуют преобразования цвета из RGB в CMYK в YCCK, где преобразование из CMYK в YCCK использует применение преобразования ITU-R BT.601 для первых трех каналов, оставляя без изменений к-канал. Короче говоря, API Aspose.PSD должен выполнять взаимное преобразование цветовых пространств RGB и CMYK для обоих изображений CMYK и YCCK, и такие преобразования производятся с помощью ICC профилей, которые по сути представляют собой таблицы поиска, описывающие свойства цвета и помогающие в цветовых преобразованиях.

Профили ICC

Механизм преобразования ICC использует “Профили”, которые отображают исходное цветовое пространство в устройственно-независимые цветовые пространства CIELAB или CIEXYZ. Aspose.PSD может конвертировать данные в цветовое пространство по необходимости, используя эти два цветовых пространства с дополнительными профилями. Поэтому для преобразования по ICC пользователю необходимо предоставить два профиля - один RGB профиль, чтобы перейти к внутреннему цветовому пространству CIE, и один CMYK профиль, чтобы получить характеристики цветов CMYK. Для достижения преобразования из CMYK в RGB необходимо поменять профили - то есть использовать CMYK профиль в качестве исходного профиля и RGB профиль в качестве целевого профиля.

Преобразование цветов для JPEG через ICC профили

API Aspose.PSD скрывает детали, предоставляя простой механизм для указания ICC профилей с помощью класса JpegOptions. Более того, Aspose.PSD использует образцовые профили SWOP CMYK и sRGB, встроенные в своё ядро, поэтому в большинстве случаев использования пользователю не нужно искать какие-либо конкретные профили. Есть недостаток таких коррекций, а именно, такие преобразования цветового пространства необратимы, потому что нельзя ожидать получить тот же цвет после преобразования из RGB в CMYK в RGB из-за несовместимости цветовых пространств и разных цветовых профилей. В следующем фрагменте кода демонстрируется использование Aspose.PSD для Java API для указания RGB и CMYK цветовых профилей для изображения JPEG с цветовым пространством YCCK. В приведенном примере свойства RgbColorProfile и CmykColorProfile будут работать для изменения пиксельных данных для цветового пространства YCCK. Для обновления цветовых данных все остальные цветовые пространства не получают цветовые профили.

Если профили не установлены, то API Aspose.PSD для Java будет использовать профили по умолчанию. В приведенном ниже примере используются свойства профилей назначения, изменяющие целевое цветовое пространство для большинства JpegImages.