Класс ICC_ColorSpace
- Все реализованные интерфейсы:
Serializable
public class ICC_ColorSpace extends ColorSpace
ICC_ColorSpace — это реализация абстрактного класса ColorSpace. Это представление независимых от устройства и зависимых от устройства цветовых пространств основано на спецификации Международного консорциума по цвету ICC.1:2001-12, Формат файлов профилей цвета (см. 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).
- См. также:
Краткое описание полей
Поля, объявленные в классе java.awt.color.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, в это цветовое пространство. |
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. |
Методы, объявленные в классе java.awt.color.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.- Возвращает:
- the
ICC_Profilefor thisICC_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) в качестве механизма преобразования цвета с одного устройства на другое. В этой архитектуре цвета преобразуются из цветового пространства исходного устройства в ICC DICS, а затем из ICC DICS в цветовое пространство целевого устройства. Стандарт ICC определяет профили устройств, которые содержат преобразования, которые будут преобразовывать между цветовым пространством устройства и ICC DICS. Общее преобразование цветов с исходного устройства на цвета целевого устройства выполняется путем соединения преобразования устройство-DICS профиля для исходного устройства с преобразованием DICS-устройство профиля для целевого устройства. По этой причине ICC DICS обычно называют пространством соединения профилей (PCS). Цветовое пространство, используемое в методах toCIEXYZ и fromCIEXYZ, является CIEXYZ PCS, определенным спецификацией 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 носителя устройства при измерении под этим осветителем. Белая точка устройства выражается как значения 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 преобразования, в это цветовое пространство. Этот метод преобразует значения цвета с использованием относительной колориметрии, как определено в спецификации ICC. Это означает, что значения аргумента XYZ, принимаемые этим методом, представлены относительно белой точки D50 цветового пространства CS_CIEXYZ. Это представление полезно в двухэтапном процессе преобразования цвета, в котором цвета преобразуются из входного цветового пространства в CS_CIEXYZ, а затем в выходное цветовое пространство. Значения цвета, возвращаемые этим методом, не являются теми, которые дали бы значение XYZ, переданное методу, если бы его измерил колориметр. Если у вас есть значения XYZ, соответствующие измерениям, сделанным в соответствии с текущими рекомендациями CIE, они должны быть преобразованы в относительные значения D50 перед передачей в этот метод. Параграфы ниже объясняют это подробнее.
Стандарт ICC использует независимое от устройства цветовое пространство (DICS) в качестве механизма преобразования цвета из одного устройства в другое. В этой архитектуре цвета преобразуются из цветового пространства исходного устройства в ICC DICS, а затем из ICC DICS в цветовое пространство устройства назначения. Стандарт ICC определяет профили устройств, которые содержат преобразования, преобразующие цвета между цветовым пространством устройства и ICC DICS. Общее преобразование цветов от исходного устройства к цветам устройства назначения выполняется путем соединения преобразования устройства в DICS профиля исходного устройства с преобразованием DICS в устройство профиля устройства назначения. По этой причине ICC DICS часто называют пространством соединения профилей (PCS). Цветовое пространство, используемое в методах toCIEXYZ и fromCIEXYZ, является цветовым пространством CIEXYZ PCS, определённым в спецификации ICC. Это также цветовое пространство, представленное ColorSpace.CS_CIEXYZ.
Значения XYZ цвета часто представляются как относительные к некоторой белой точке, поэтому подлинный смысл значений XYZ неизвестен без знания белой точки этих значений. Это известно как относительная колориметрия. PCS использует белую точку D50, поэтому значения XYZ PCS относятся к D50. Например, белый цвет в PCS будет иметь значения XYZ D50, которые определены как X = 0,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 носителя устройства при измерении под этим освещением. Белая точка устройства выражается как значения 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/color/ICC_ColorSpace.html