lcms
Библиотека для управления цветом, реализующая модуль Color Management System (CMS). Она предоставляет инструменты для преобразования цветов между различными цветовыми пространствами, работы с ICC-профилями и обеспечения точного воспроизведения цвета на разных устройствах. Библиотека широко используется в графических приложениях, операционных системах и встраиваемых системах для обеспечения консистентности цветопередачи.
Особенности
- полная поддержка стандарта ICC (International Color Consortium) для работы с цветовыми профилями;
- преобразование цветов между различными цветовыми пространствами (RGB, CMYK, Lab, XYZ и др.);
- поддержка как 8-битных, так и 16-битных и с плавающей точкой цветовых данных;
- малый размер и минимальные зависимости, подходит для встраиваемых систем.
Основные компоненты
LCMS состоит из нескольких модулей, которые обеспечивают все функции системы управления цветом, от чтения ICC-профилей до выполнения сложных преобразований (подробнее с документацией можно ознакомиться здесь).
Работа с ICC-профилями
Библиотека предоставляет полный набор функций для чтения, записи, создания и управления ICC-профилями. Это включает поддержку различных версий стандарта ICC и работу с профилями устройств, пространств соединения и абстрактными профилями.
Основные функции работы с профилями:
cmsOpenProfileFromFile(),cmsOpenProfileFromMem()— открытие профилей из файла или памяти;cmsCloseProfile()— закрытие профиля и освобождение ресурсов;cmsCreateRGBProfile(),cmsCreateLab4Profile()— создание стандартных профилей;cmsSaveProfileToFile(),cmsSaveProfileToMem()— сохранение профилей;cmsGetProfileInfo()— получение информации о профиле (описание, производитель и др.);cmsGetPCS()иcmsGetColorSpace()— получение цветового пространства профиля.
Преобразование цветов
LCMS предоставляет мощный механизм для создания трансформ — объектов, которые выполняют преобразование цветов из одного цветового пространства в другое с учетом заданных ICC-профилей и параметров рендеринга.
Функции создания и использования трансформ:
cmsCreateTransform()— создание трансформации на основе входного и выходного профилей;cmsCreateMultiprofileTransform()— создание трансформации с несколькими профилями;cmsDoTransform()— применение трансформации к массиву цветовых данных;cmsDeleteTransform()— удаление трансформации и освобождение ресурсов;cmsChangeBuffersFormat()— изменение формата данных в буфере без изменения цвета.
Поддержка различных форматов данных
Библиотека поддерживает множество форматов цветовых данных, включая различные разрядности, порядки каналов и упаковки. Это позволяет интегрировать LCMS в различные графические конвейеры без необходимости преобразования данных.
Поддерживаемые форматы:
- Целочисленные форматы: 8-бит, 16-бит на канал;
- Форматы с плавающей точкой: 32-бит float, 16-бит half-float (опционально);
- Порядок каналов: RGB, BGR, ARGB, CMYK, Lab, XYZ;
- Планерные и чанкированные (interleaved) данные.
Работа с тегами профилей
Библиотека позволяет читать и записывать теги ICC-профилей, что полезно для работы с метаданными и кастомными расширениями профилей.
Функции работы с тегами:
cmsReadTag()— чтение данных тега профиля;cmsWriteTag()— запись данных в тег профиля;cmsTagLinkedTo()— определение связи между тегами;- Поддержка как стандартных, так и частных (private) тегов.
Цветовые преобразования без ICC-профилей
LCMS также предоставляет функции для базовых цветовых преобразований без необходимости использования ICC-профилей. Это полезно для простых операций или когда полный профиль не требуется.
Базовые цветовые функции:
cmsXYZ2Lab(),cmsLab2XYZ()— преобразование между XYZ и Lab;cmsXYZ2xyY(),cmsxyY2XYZ()— преобразование между XYZ и xyY;cmsDeltaE()— вычисление цветовой разницы (ΔE) между двумя цветами;cmsWhitePointFromTemp()— получение белой точки по цветовой температуре.
Интеграция с графическими системами
LCMS может интегрироваться с различными графическими системами и библиотеками, такими как GIMP, ImageMagick, и поддерживает плагины для популярных приложений.
Точки интеграции:
- Поддержка плагинов для Photoshop через формат 8BF;
- Интеграция с GIMP через плагин GIMP-LCMS;
- Использование в ImageMagick и GraphicsMagick для цветовых преобразований.