Класс 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
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_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 | Модификатор и тип | Метод | Описание |
|---|---|---|
static ColorSpace |
getInstance |
Возвращает ColorSpace, представляющий одно из конкретных предопределённых цветовых пространств. |
String |
getName |
Возвращает имя компонента по его индексу. |
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 |
Показывает, равен ли другой объект этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова 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
© 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.