Spec-Zone.ru › OpenJDK 25

Класс ICC_ColorSpace

java.lang.Object
java.awt.color.ColorSpace
java.awt.color.ICC_ColorSpace
Все реализованные интерфейсы:
Serializable
public class ICC_ColorSpace extends ColorSpace
Класс ICC_ColorSpace является реализацией абстрактного класса ColorSpace. Это представление независимых от устройства и зависимых от устройства цветовых пространств основано на спецификации International Color Consortium ICC.1:2001-12, File Format for Color Profiles (см. https://www.color.org).

Обычно с Color или ColorModel связывается профиль ICC, который является входным, экранным или выходным профилем (см. спецификацию ICC). Существуют и другие типы профилей ICC, например абстрактные профили, профили связи устройств и профили именованных цветов, которые не содержат информации, необходимой для представления цветового пространства цвета, изображения или устройства (см. ICC_Profile). Попытка создать объект ICC_ColorSpace на основе неподходящего профиля ICC приводит к ошибке.

Профили ICC представляют преобразования из цветового пространства профиля (например, монитора) в пространство связи профилей (PCS). Профили, предназначенные для маркировки изображений или цветов, имеют PCS, являющееся одним из независимых от устройства пространств (одним пространством CIEXYZ и двумя пространствами CIELab), определённых в спецификации формата профиля ICC. Большинство представляющих интерес профилей либо имеют обратимые преобразования, либо явно задают преобразования в обоих направлениях. Если объект ICC_ColorSpace используется способом, требующим преобразования из PCS в собственное пространство профиля, но данных недостаточно для правильного выполнения этого преобразования, объект ICC_ColorSpace будет выдавать результат в указанном типе цветового пространства (например, TYPE_RGB, TYPE_CMYK и т. д.), однако конкретные значения цветов в выходных данных не будут определены.

Подробности реализации этого класса не важны для простых приложений, которые выполняют рисование в цветовом пространстве по умолчанию или обрабатывают и отображают импортированные изображения с известным цветовым пространством. В большинстве случаев таким приложениям достаточно получить одно из цветовых пространств по умолчанию с помощью ColorSpace.getInstance(int).

См. также:
  • ColorSpace
  • ICC_Profile
  • Сериализованная форма

Краткое описание полей

Поля, объявленные в классе ColorSpace

CS_CIEXYZ, CS_GRAY, CS_LINEAR_RGB, CS_PYCC, CS_sRGB, TYPE_2CLR, TYPE_3CLR, TYPE_4CLR, TYPE_5CLR, TYPE_6CLR, TYPE_7CLR, TYPE_8CLR, TYPE_9CLR, TYPE_ACLR, TYPE_BCLR, TYPE_CCLR, TYPE_CMY, TYPE_CMYK, TYPE_DCLR, TYPE_ECLR, TYPE_FCLR, TYPE_GRAY, TYPE_HLS, TYPE_HSV, TYPE_Lab, TYPE_Luv, TYPE_RGB, TYPE_XYZ, TYPE_YCbCr, TYPE_Yxy

Краткое описание конструкторов

Конструктор Описание
ICC_ColorSpace(ICC_Profile profile)
Создаёт новый ICC_ColorSpace на основе объекта ICC_Profile.

Краткое описание методов

Модификатор и тип Метод Описание
float[] fromCIEXYZ(float[] colorvalue)
Преобразует значение цвета, которое предполагается заданным в цветовом пространстве преобразования CS_CIEXYZ, в это ColorSpace.
float[] fromRGB(float[] rgbvalue)
Преобразует значение цвета, которое предполагается заданным в цветовом пространстве CS_sRGB по умолчанию, в это ColorSpace.
float getMaxValue(int component)
Возвращает максимальное нормализованное значение компонента цвета для указанного компонента.
float getMinValue(int component)
Возвращает минимальное нормализованное значение компонента цвета для указанного компонента.
ICC_Profile getProfile()
Возвращает ICC_Profile для этого ICC_ColorSpace.
float[] toCIEXYZ(float[] colorvalue)
Преобразует значение цвета, которое предполагается заданным в этом ColorSpace, в пространство преобразования CS_CIEXYZ.
float[] toRGB(float[] colorvalue)
Преобразует значение цвета, которое предполагается заданным в этом ColorSpace, в значение в цветовом пространстве CS_sRGB по умолчанию.

Методы, объявленные в классе ColorSpace

getInstance, getName, getNumComponents, getType, isCS_sRGB

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

ICC_ColorSpace

public ICC_ColorSpace(ICC_Profile profile)
Создаёт новый ICC_ColorSpace на основе объекта ICC_Profile.
Параметры:
profile — указанный объект ICC_Profile
Исключения:
IllegalArgumentException — если профиль не подходит для представления ColorSpace
NullPointerException — если profile имеет значение null

Подробное описание методов

getProfile

public ICC_Profile getProfile()
Возвращает ICC_Profile для этого ICC_ColorSpace.
Возвращает:
ICC_Profile для этого ICC_ColorSpace

toRGB

public float[] toRGB(float[] colorvalue)
Преобразует значение цвета, которое предполагается заданным в этом ColorSpace, в значение в цветовом пространстве CS_sRGB по умолчанию.

Этот метод преобразует значения цветов с помощью алгоритмов, предназначенных для достижения наилучшего перцептивного соответствия между входными и выходными цветами. Для колориметрического преобразования значений цветов сначала используйте метод toCIEXYZ этого цветового пространства, чтобы преобразовать цвет из входного цветового пространства в цветовое пространство CS_CIEXYZ, а затем используйте метод fromCIEXYZ цветового пространства CS_sRGB для преобразования из CS_CIEXYZ в выходное цветовое пространство. Дополнительные сведения см. в разделах toCIEXYZ и fromCIEXYZ.

Определён в:
toRGB в классе ColorSpace
Параметры:
colorvalue — массив float длиной не менее количества компонентов в этом ColorSpace
Возвращает:
массив float длиной 3
Исключения:
ArrayIndexOutOfBoundsException — если длина массива меньше количества компонентов в этом ColorSpace
NullPointerException — если colorvalue имеет значение null

fromRGB

public float[] fromRGB(float[] rgbvalue)
Преобразует значение цвета, которое предполагается заданным в цветовом пространстве CS_sRGB по умолчанию, в это ColorSpace.

Этот метод преобразует значения цветов с помощью алгоритмов, предназначенных для достижения наилучшего перцептивного соответствия между входными и выходными цветами. Для колориметрического преобразования значений цветов сначала используйте метод toCIEXYZ цветового пространства CS_sRGB, чтобы преобразовать цвет из входного цветового пространства в цветовое пространство CS_CIEXYZ, а затем используйте метод fromCIEXYZ этого цветового пространства, чтобы преобразовать цвет из CS_CIEXYZ в выходное цветовое пространство. Дополнительные сведения см. в разделах toCIEXYZ и fromCIEXYZ.

Определён в:
fromRGB в классе ColorSpace
Параметры:
rgbvalue — массив float длиной не менее 3
Возвращает:
массив float длиной, равной количеству компонентов в этом ColorSpace
Исключения:
ArrayIndexOutOfBoundsException — если длина массива меньше 3
NullPointerException — если rgbvalue имеет значение null

toCIEXYZ

public float[] toCIEXYZ(float[] colorvalue)
Преобразует значение цвета, которое предполагается заданным в этом ColorSpace, в пространство преобразования CS_CIEXYZ.

Этот метод преобразует значения цветов с использованием относительной колориметрии, определённой спецификацией ICC. Это означает, что значения XYZ, возвращаемые этим методом, представлены относительно белой точки D50 цветового пространства CS_CIEXYZ. Это представление удобно для двухэтапного процесса преобразования цвета, в котором цвета преобразуются из входного цветового пространства в CS_CIEXYZ, а затем в выходное цветовое пространство. Это представление отличается от значений XYZ, которые колориметр измерил бы для заданного значения цвета. Чтобы вычислить значения XYZ, которые были бы измерены в соответствии с текущими рекомендациями CIE, необходимо выполнить дополнительное преобразование. В следующих абзацах это описано подробнее.

В стандарте ICC независимое от устройства цветовое пространство (DICS) используется как средство преобразования цвета с одного устройства на другое. В этой архитектуре цвета преобразуются из цветового пространства исходного устройства в DICS ICC, а затем из DICS ICC в цветовое пространство целевого устройства. Стандарт ICC определяет профили устройств, содержащие преобразования между цветовыми пространствами устройств и DICS ICC. Общее преобразование цветов исходного устройства в цвета целевого устройства выполняется соединением преобразования «устройство — DICS» профиля исходного устройства с преобразованием «DICS — устройство» профиля целевого устройства. Поэтому DICS ICC обычно называют пространством связи профилей (PCS). В методах toCIEXYZ и fromCIEXYZ используется PCS CIEXYZ, определённое спецификацией ICC. Это также цветовое пространство, представленное ColorSpace.CS_CIEXYZ.

Значения XYZ цвета часто представляются относительно некоторой белой точки, поэтому фактический смысл значений XYZ нельзя определить, не зная белую точку, относительно которой они заданы. Это называется относительной колориметрией. В PCS используется белая точка D50, поэтому значения XYZ в PCS заданы относительно D50. Например, белый цвет в PCS имеет значения XYZ белой точки D50: X=.9642, Y=1.000 и Z=0.8249. Эта белая точка обычно используется в полиграфии, однако в других приложениях часто используются иные точки.

Для определения цветовых характеристик устройства, например принтера или монитора, обычно измеряют значения XYZ для конкретных цветов устройства. В рамках этого обсуждения под значениями XYZ устройства понимаются значения XYZ, которые были бы измерены для цветов устройства в соответствии с текущими рекомендациями CIE.

Преобразование между значениями XYZ устройства и значениями XYZ PCS, возвращаемыми этим методом, соответствует преобразованию между цветовым пространством устройства, представленным колориметрическими значениями CIE, и PCS. Этот процесс включает множество факторов, некоторые из которых довольно тонкие. Наиболее важным фактором является, однако, поправка на различие между белой точкой устройства и белой точкой PCS. Существует множество способов выполнить такую поправку; этот вопрос активно исследуется и вызывает споры. К распространённым методам относятся масштабирование XYZ, преобразование фон Криса и преобразование Брэдфорда. Выбор подходящего метода зависит от конкретного приложения.

Самый простой метод — масштабирование XYZ. При этом каждое значение XYZ устройства преобразуется в значение XYZ PCS умножением на отношение белой точки PCS (D50) к белой точке устройства.


Xd, Yd, Zd are the device XYZ values
Xdw, Ydw, Zdw are the device XYZ white point values
Xp, Yp, Zp are the PCS XYZ values
Xd50, Yd50, Zd50 are the PCS XYZ white point values

Xp = Xd * (Xd50 / Xdw)
Yp = Yd * (Yd50 / Ydw)
Zp = Zd * (Zd50 / Zdw)

Преобразование из PCS в пространство устройства выполняется обращением этих уравнений:


Xd = Xp * (Xdw / Xd50)
Yd = Yp * (Ydw / Yd50)
Zd = Zp * (Zdw / Zd50)

Обратите внимание, что тег белой точки носителя в профиле ICC не совпадает с белой точкой устройства. Тег белой точки носителя выражен в значениях PCS и используется для представления разницы между значениями XYZ источника освещения устройства и носителя устройства при измерении под этим источником освещения. Белая точка устройства выражена значениями XYZ устройства, соответствующими отображаемому на устройстве белому цвету. Например, отображение цвета RGB (1.0, 1.0, 1.0) на устройстве sRGB даст измеренное значение XYZ устройства, соответствующее D65. Оно не совпадает со значением XYZ тега белой точки носителя в профиле ICC для устройства sRGB.

Определён в:
toCIEXYZ в классе ColorSpace
Параметры:
colorvalue — массив float длиной не менее количества компонентов в этом ColorSpace
Возвращает:
массив float длиной 3
Исключения:
ArrayIndexOutOfBoundsException — если длина массива меньше количества компонентов в этом ColorSpace
NullPointerException — если colorvalue имеет значение null

fromCIEXYZ

public float[] fromCIEXYZ(float[] colorvalue)
Преобразует значение цвета, которое предполагается заданным в пространстве преобразования CS_CIEXYZ, в это ColorSpace.

Этот метод преобразует значения цветов с использованием относительной колориметрии, определённой спецификацией ICC. Это означает, что значения аргумента XYZ, принимаемые этим методом, представлены относительно белой точки D50 цветового пространства CS_CIEXYZ. Это представление удобно для двухэтапного процесса преобразования цвета, в котором цвета преобразуются из входного цветового пространства в CS_CIEXYZ, а затем в выходное цветовое пространство. Возвращаемые этим методом значения цвета не соответствуют тем, которые дали бы переданное методу значение XYZ при измерении колориметром. Если имеются значения XYZ, соответствующие измерениям, выполненным в соответствии с текущими рекомендациями CIE, перед передачей этому методу их необходимо преобразовать в значения относительно D50. В следующих абзацах это описано подробнее.

В стандарте ICC независимое от устройства цветовое пространство (DICS) используется как средство преобразования цвета с одного устройства на другое. В этой архитектуре цвета преобразуются из цветового пространства исходного устройства в DICS ICC, а затем из DICS ICC в цветовое пространство целевого устройства. Стандарт ICC определяет профили устройств, содержащие преобразования между цветовыми пространствами устройств и DICS ICC. Общее преобразование цветов исходного устройства в цвета целевого устройства выполняется соединением преобразования «устройство — DICS» профиля исходного устройства с преобразованием «DICS — устройство» профиля целевого устройства. Поэтому DICS ICC обычно называют пространством связи профилей (PCS). В методах toCIEXYZ и fromCIEXYZ используется PCS CIEXYZ, определённое спецификацией ICC. Это также цветовое пространство, представленное ColorSpace.CS_CIEXYZ.

Значения XYZ цвета часто представляются относительно некоторой белой точки, поэтому фактический смысл значений XYZ нельзя определить, не зная белую точку, относительно которой они заданы. Это называется относительной колориметрией. В PCS используется белая точка D50, поэтому значения XYZ в PCS заданы относительно D50. Например, белый цвет в PCS имеет значения XYZ белой точки D50: X=.9642, Y=1.000 и Z=0.8249. Эта белая точка обычно используется в полиграфии, однако в других приложениях часто используются иные точки.

Для определения цветовых характеристик устройства, например принтера или монитора, обычно измеряют значения XYZ для конкретных цветов устройства. В рамках этого обсуждения под значениями XYZ устройства понимаются значения XYZ, которые были бы измерены для цветов устройства в соответствии с текущими рекомендациями CIE.

Преобразование между значениями XYZ устройства и значениями XYZ PCS, принимаемыми этим методом в качестве аргументов, соответствует преобразованию между цветовым пространством устройства, представленным колориметрическими значениями CIE, и PCS. Этот процесс включает множество факторов, некоторые из которых довольно тонкие. Наиболее важным фактором является, однако, поправка на различие между белой точкой устройства и белой точкой PCS. Существует множество способов выполнить такую поправку; этот вопрос активно исследуется и вызывает споры. К распространённым методам относятся масштабирование XYZ, преобразование фон Криса и преобразование Брэдфорда. Выбор подходящего метода зависит от конкретного приложения.

Самый простой метод — масштабирование XYZ. При этом каждое значение XYZ устройства преобразуется в значение XYZ PCS умножением на отношение белой точки PCS (D50) к белой точке устройства.


Xd, Yd, Zd are the device XYZ values
Xdw, Ydw, Zdw are the device XYZ white point values
Xp, Yp, Zp are the PCS XYZ values
Xd50, Yd50, Zd50 are the PCS XYZ white point values

Xp = Xd * (Xd50 / Xdw)
Yp = Yd * (Yd50 / Ydw)
Zp = Zd * (Zd50 / Zdw)

Преобразование из PCS в пространство устройства выполняется обращением этих уравнений:


Xd = Xp * (Xdw / Xd50)
Yd = Yp * (Ydw / Yd50)
Zd = Zp * (Zdw / Zd50)

Обратите внимание, что тег белой точки носителя в профиле ICC не совпадает с белой точкой устройства. Тег белой точки носителя выражен в значениях PCS и используется для представления разницы между значениями XYZ источника освещения устройства и носителя устройства при измерении под этим источником освещения. Белая точка устройства выражена значениями XYZ устройства, соответствующими отображаемому на устройстве белому цвету. Например, отображение цвета RGB (1.0, 1.0, 1.0) на устройстве sRGB даст измеренное значение XYZ устройства, соответствующее D65. Оно не совпадает со значением XYZ тега белой точки носителя в профиле ICC для устройства sRGB.

Определён в:
fromCIEXYZ в классе ColorSpace
Параметры:
colorvalue — массив float длиной не менее 3
Возвращает:
массив float длиной, равной количеству компонентов в этом ColorSpace
Исключения:
ArrayIndexOutOfBoundsException — если длина массива меньше 3
NullPointerException — если colorvalue имеет значение null

getMinValue

public float getMinValue(int component)
Возвращает минимальное нормализованное значение компонента цвета для указанного компонента. Для пространств TYPE_XYZ этот метод возвращает минимальное значение 0.0 для всех компонентов. Для пространств TYPE_Lab этот метод возвращает 0.0 для L и -128.0 для компонентов a и b. Это соответствует кодированию пространств связи профилей XYZ и Lab в спецификации ICC. Для всех остальных типов этот метод возвращает 0.0 для всех компонентов. При использовании ICC_ColorSpace с профилем, для которого требуются другие минимальные значения компонентов, необходимо создать подкласс этого класса и переопределить данный метод.
Переопределяет:
getMinValue в классе ColorSpace
Параметры:
component — индекс компонента
Возвращает:
минимальное нормализованное значение компонента
Исключения:
IllegalArgumentException — если индекс компонента меньше 0 или больше numComponents - 1
С версии:
1.4

getMaxValue

public float getMaxValue(int component)
Возвращает максимальное нормализованное значение компонента цвета для указанного компонента. Для пространств TYPE_XYZ этот метод возвращает максимальное значение 1.0 + (32767.0 / 32768.0) для всех компонентов. Для пространств TYPE_Lab этот метод возвращает 100.0 для L и 127.0 для компонентов a и b. Это соответствует кодированию пространств связи профилей XYZ и Lab в спецификации ICC. Для всех остальных типов этот метод возвращает 1.0 для всех компонентов. При использовании ICC_ColorSpace с профилем, для которого требуются другие максимальные значения компонентов, необходимо создать подкласс этого класса и переопределить данный метод.
Переопределяет:
getMaxValue в классе ColorSpace
Параметры:
component — индекс компонента
Возвращает:
максимальное нормализованное значение компонента
Исключения:
IllegalArgumentException — если индекс компонента меньше 0 или больше numComponents - 1
С версии:
1.4

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/color/ICC_ColorSpace.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API