Spec-Zone.ru › OpenJDK 27

Класс ICC_ColorSpace

java.lang.Object
java.awt.color.ColorSpace
java.awt.color.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).

См. также:
  • 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
Модификатор и тип Поле Описание
static final int CS_CIEXYZ
Встроенное цветовое пространство преобразования CIEXYZ, определённое выше.
static final int CS_GRAY
Встроенное линейное цветовое пространство оттенков серого.
static final int CS_LINEAR_RGB
Встроенное линейное цветовое пространство RGB.
static final int CS_PYCC
Встроенное цветовое пространство преобразования Photo YCC.
static final int CS_sRGB
Встроенное цветовое пространство sRGB, определённое по адресу http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html.
static final int TYPE_2CLR
Универсальные цветовые пространства с 2 компонентами.
static final int TYPE_3CLR
Универсальные цветовые пространства с 3 компонентами.
static final int TYPE_4CLR
Универсальные цветовые пространства с 4 компонентами.
static final int TYPE_5CLR
Универсальные цветовые пространства с 5 компонентами.
static final int TYPE_6CLR
Универсальные цветовые пространства с 6 компонентами.
static final int TYPE_7CLR
Универсальные цветовые пространства с 7 компонентами.
static final int TYPE_8CLR
Универсальные цветовые пространства с 8 компонентами.
static final int TYPE_9CLR
Универсальные цветовые пространства с 9 компонентами.
static final int TYPE_ACLR
Универсальные цветовые пространства с 10 компонентами.
static final int TYPE_BCLR
Универсальные цветовые пространства с 11 компонентами.
static final int TYPE_CCLR
Универсальные цветовые пространства с 12 компонентами.
static final int TYPE_CMY
Любое цветовое пространство семейства CMY.
static final int TYPE_CMYK
Любое цветовое пространство семейства CMYK.
static final int TYPE_DCLR
Универсальные цветовые пространства с 13 компонентами.
static final int TYPE_ECLR
Универсальные цветовые пространства с 14 компонентами.
static final int TYPE_FCLR
Универсальные цветовые пространства с 15 компонентами.
static final int TYPE_GRAY
Любое цветовое пространство семейства GRAY.
static final int TYPE_HLS
Любое цветовое пространство семейства HLS.
static final int TYPE_HSV
Любое цветовое пространство семейства HSV.
static final int TYPE_Lab
Любое цветовое пространство семейства Lab.
static final int TYPE_Luv
Любое цветовое пространство семейства Luv.
static final int TYPE_RGB
Любое цветовое пространство семейства RGB.
static final int TYPE_XYZ
Любое цветовое пространство семейства XYZ.
static final int TYPE_YCbCr
Любое цветовое пространство семейства YCbCr.
static final int TYPE_Yxy
Любое цветовое пространство семейства 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
Модификатор и тип Метод Описание
static ColorSpace getInstance(int cspace)
Возвращает ColorSpace, представляющий одно из конкретных предопределённых цветовых пространств.
String getName(int component)
Возвращает имя компонента по его индексу.
int getNumComponents()
Возвращает количество компонентов этого ColorSpace.
int getType()
Возвращает тип цветового пространства этого ColorSpace (например, TYPE_RGB, TYPE_XYZ и т. д.).
boolean isCS_sRGB()
Возвращает true, если ColorSpace является CS_sRGB.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного интервала реального времени.

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

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 используется пространство 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, в это 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 используется пространство 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.

Определено в:
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, 2026, 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.

Spec-Zone.ru

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