Класс 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
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_ColorSpace на основе объекта ICC_Profile. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
float[] |
fromCIEXYZ |
Преобразует значение цвета, которое предполагается заданным в цветовом пространстве преобразования CS_CIEXYZ, в это ColorSpace. |
float[] |
fromRGB |
Преобразует значение цвета, которое предполагается заданным в цветовом пространстве CS_sRGB по умолчанию, в это ColorSpace. |
float |
getMaxValue |
Возвращает максимальное нормализованное значение компонента цвета для указанного компонента. |
float |
getMinValue |
Возвращает минимальное нормализованное значение компонента цвета для указанного компонента. |
ICC_Profile |
getProfile() |
Возвращает ICC_Profile для этого ICC_ColorSpace. |
float[] |
toCIEXYZ |
Преобразует значение цвета, которое предполагается заданным в этом ColorSpace, в пространство преобразования CS_CIEXYZ. |
float[] |
toRGB |
Преобразует значение цвета, которое предполагается заданным в этом ColorSpace, в значение в цветовом пространстве CS_sRGB по умолчанию. |
Методы, объявленные в классе ColorSpace
getInstance, getName, getNumComponents, getType, isCS_sRGB
Подробное описание конструкторов
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
© 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