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

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

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

API Aspose.PSD должно выполнять прямое преобразование цвета из RGB в CMYK для изображений JPEG с цветовым пространством CMYK. С другой стороны, изображения с цветовым пространством YCCK требуют преобразования цвета из RGB в CMYK в YCCK, где преобразование из CMYK в YCCK использует конвертацию ITU-R BT.601, применяемую к первым трем каналам, оставляя k-канал неизменным. Кратко, 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 для .NET API для указания RGB и CMYK цветовых профилей для изображения JPEG с цветовым пространством YCCK. В приведенном примере профили RGB и CMYK меняются, и изображение сохраняется в цветовом пространстве YCCK. Обратите внимание, что свойства RgbColorProfile и CmykColorProfile будут работать для изменения пиксельных данных для цветового пространства YCCK. Для всех остальных цветовых пространств профили цвета не извлекаются для обновления цветовых данных.

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