Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий |
Цветная обработка изображений является одним из фундаментальных компонентов любой графической системы, и это часто - источник большой сложности в модели обработки изображений. Java 2D™ API оказывает поддержку для высококачественного цветного вывода, который удобен и позволяет усовершенствованным клиентам делать сложное использование цвета.
Ключевые классы управления цветом в Java 2-D API ColorSpace, Color
, ColorModel
:
ColorSpace
представляет систему для того, чтобы измерить цвета, обычно используя три отдельных численных значения или компоненты. ColorSpace
класс содержит методы для того, чтобы преобразовать между цветовым пространством и двумя стандартными цветовыми пространствами, CIEXYZ
и RGB.Color
фиксированный цвет, определенный с точки зрения его компонентов в детали ColorSpace
. Потянуть a Shape
в цвете, такой как красный, Вы передаете a Color
объект, представляющий тот цвет Graphics2D
контекст. Color
определяется в java.awt package
.ColorModel
описывает определенный способ, которым пиксельные значения отображаются на цвета. A ColorModel
обычно связывается с Image
или BufferedImage
и предоставляет информацию, необходимую, чтобы правильно интерпретировать пиксельные значения. ColorModel
определяется в java.awt.image packag
e.A ColorModel
используется, чтобы интерпретировать пиксельные данные в изображении. Это включает отображающиеся компоненты в полосы изображения к компонентам определенного цветового пространства. Это могло бы также включить пиксельные компоненты извлечения от упакованных пиксельных данных, получение многократных компонентов от единственной полосы, используя маски, и преобразовывая пиксельные данные через таблицу поиска.
Чтобы определить значение цвета определенного пикселя в изображении, Вы должны знать, как информация о цвете кодируется в каждом пикселе. ColorModel
связанный с изображением инкапсулирует данные и методы, необходимые для того, чтобы преобразовать пиксельное значение в и от его составляющих компонентов цвета.
Java 2D™ API обеспечивает две цветовых модели в дополнение к DirectColorModel
и IndexColorModel
определенный в JDK 1.1 выпуска программного обеспечения:
ComponentColorModel
может обработать произвольное ColorSpace
и массив компонентов цвета, чтобы соответствовать ColorSpace
. Эта модель может использоваться, чтобы представить большинство цветовых моделей на большинстве типов GraphicsDevices
.PackedColorModel
базовый класс для моделей, которые представляют пиксельные значения, которым встроили их компоненты цвета непосредственно в битах целочисленного пикселя. A PackedColorModel
хранит информацию упаковки, которая описывает, как цвет и альфа-компоненты извлекаются из канала. DirectColorModel
в JDK 1.1 выпуска программного обеспечения являются a PackedColorModel
.A ColorSpace
объект представляет систему для того, чтобы измерить цвета, обычно используя три отдельных числовых значения. Например, RGB и CMYK являются цветовыми пространствами. A ColorSpace
объект служит тегом colorspace, который идентифицирует определенное цветовое пространство a Color
возразите или через a ColorModel
объект, Image
, BufferedImage
, или GraphicsConfiguration
. ColorSpace
обеспечивает методы, которые преобразовывают Colors
в определенном цветовом пространстве к и от sRGB
и к и от четко определенного CIEXYZ
цветовое пространство.
Все ColorSpace
объекты должны быть в состоянии отобразить цвет от представленного цветового пространства в sRGB
и преобразуйте sRGB
цвет в представленное цветовое пространство. Начиная с каждого Color
содержит a ColorSpace
объект, набор явно или по умолчанию, каждый Color
может также быть преобразован в sRGB
. Каждый GraphicsConfiguration
связывается с a ColorSpace
возразите, что поочередно имеет связанное ColorSpace
. Цвет, определенный в любом цветовом пространстве, может быть выведен на экран любым устройством, отображая это через sRGB
как промежуточное цветовое пространство.
Методы, используемые для этого процесса, toRGB
и fromRGB:
toRGB
преобразовывает a Color
в представленном цветовом пространстве к a Color
в sRGB
.fromRGB
берет a Color
в sRGB
и преобразовывает это в представленное цветовое пространство.Хотя отображаясь через sRGB
всегда работы, это - не всегда лучшее решение. С одной стороны, sRGB
не может представить каждый цвет в полной палитре CIEXYZ
цвета. Если цвет определяется в некотором пространстве, у которого есть различная палитра (спектр представимых цветов) чем sRGB
, тогда использование sRGB
поскольку промежуточное пространство приводит к потере информации. Рассмотреть эту проблему, ColorSpace
класс может отобразить цвета на и от другого цветового пространства, “пространство преобразования” CIEXYZ
.
Методы toCIEXYZ
и fromCIEXYZ
отобразите значения цвета от представленного цветового пространства до пространства преобразования. Эти методы поддерживают преобразования между любыми двумя цветовыми пространствами в разумно высокой степени точности, один Color
за один раз. Однако, ожидается, что Java 2-D реализации API будет поддерживать высокоэффективное преобразование, основанное на базовых системах управления цветом платформы, работающих на всех изображениях. (См. ColorConvertOp
в "Обработке изображений" на странице 67.)
Рисунок 6-1 и рисунок 6-2 иллюстрируют процесс преобразования цвета, определенного в цветовом пространстве CMYK для дисплея на цветном мониторе RGB. Рисунок 6-1 показывает отображение через sRGB
. Поскольку это число иллюстрирует, преобразование цвета CMYK к цвету RGB не точно из-за несоответствия палитры. 1
Рисунок 6-2 показывает то же самое использование процесса CIEXYZ
как пространство преобразования. Когда CIEXYZ
используется, через цвет проходят точно.
ColorSpace
фактически абстрактный класс. Java 2-D API обеспечивает одну реализацию, ICC_ColorSpace
, который основан на данных Профиля ICC как представлено ICC_Profile
класс. Можно определить свои собственные подклассы, чтобы представить произвольные цветовые пространства, пока методы, обсужденные выше, реализуются. Однако, большинство разработчиков может просто использовать значение по умолчанию sRGB
ColorSpace
или цветовые пространства, которые представляются обычно доступными Профилями ICC, такими как профили для мониторов и принтеров, или профили, встроенные в данные изображения.
“ColorSpace” на странице 90 описывает как ColorSpace
объекты представляют цветовое пространство и как цвета в представленном пространстве могут быть отображены на и от пространства преобразования. Системы управления цветом часто используются, чтобы обработать отображение между цветовыми пространствами. Типичная система управления цветом (CMS) управляет профилями ICC, которые подобны ColorSpace
объекты; профили ICC описывают входное пространство и пространство соединения, и определяют, как отобразиться между ними. Системы управления цветом очень хороши в выяснении, как отобразить цвет, тегированный с одним профилем в цветовое пространство другого профиля.
Java 2-D API определяет вызванный класс ICC_Profile
это содержит данные для произвольного Профиля ICC. ICC_ColorSpace
реализация краткого обзора ColorSpace
класс. ICC_ColorSpace
объекты могут быть созданы из ICC_Profiles
. (Есть некоторые ограничения — не, все Профили ICC являются подходящими для определения ICC_ColorSpace
).
ICC_Profile
имеет несколько подклассов, которые соответствуют определенным типам цветового пространства, такой как ICC_ProfileRGB
и ICC_ProfileGray
. Каждый подкласс ICC_Profile
имеет четко определенное входное пространство (такое как пространство RGB) и четко определенное пространство соединения (как CIEXYZ
). Java 2-D API может использовать CMS платформы, чтобы получить доступ к цветным профилям для различных устройств, таких как сканеры, принтеры, и мониторы. Это может также использовать CMS, чтобы найти лучшее отображение между профилями.
Color
класс обеспечивает описание цвета в определенном цветовом пространстве. Экземпляр Color
содержит значение компонентов цвета и a ColorSpace
объект. Поскольку a ColorSpace
объект может быть определен в дополнение к компонентам цвета когда новый экземпляр Color
создается, Color
класс может обработать цвета в любом цветовом пространстве.
Color
у класса есть много методов, которые поддерживают предложенное стандартное вызванное цветовое пространство RGB sRGB
(см. http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html
). sRGB
пространство цвета по умолчанию для Java 2-D API. Несколько конструкторов, определенных Цветным классом, опускают ColorSpace
параметр. Эти конструкторы предполагают, что значения RGB цвета определяются в sRGB
, и используйте экземпляр по умолчанию ColorSpace
представлять то пространство.
Java 2-D использование API sRGB
как удобство прикладным программистам, не как ссылочное цветовое пространство для цветного преобразования. Много приложений прежде всего касаются изображений RGB и мониторов, и определение стандартного цветового пространства RGB делает запись таких приложений легче. ColorSpace
класс определяет методы toRGB
и fromRGB
так, чтобы разработчики могли легко получить цвета в этом стандартном пространстве. Эти методы не предназначаются, чтобы использоваться для очень точной коррекции цвета или преобразований. См. “ColorSpace” на странице 90 для получения дополнительной информации.
Создать цвет в цветовом пространстве кроме sRGB
, Вы используете Color
конструктор, который берет a ColorSpace
возразите и массив плаваний, которые представляют компоненты цвета, соответствующие тому пространству. ColorSpace
объект идентифицирует цветовое пространство.
Чтобы вывести на экран прямоугольник определенного цвета, такого как синий смесевой цвет, Вы нуждаетесь в способе описать этот цвет к системе. Есть много различных способов описать цвет; например, цвет мог быть описан как ряд красного, зеленого, и синего (RGB) компоненты, или ряд синего, пурпурного, желтого, и черного (CMYK) компоненты. Эти различные методы для того, чтобы определить цвета вызывают цветовыми пространствами.
Как Вы, вероятно, знаете, цвета на мониторе сгенерированы, смешивая различное количество красного, зеленого, и синего света. Поэтому, использование цветового пространства RGB является стандартным для того, чтобы отобразить на компьютерных мониторах. Точно так же использование печати процесса с четырьмя цветами синяя, пурпурная, желтая, и прибыль, чтобы произвести цвет на печатной странице; печатные цвета определяются как проценты в цветовом пространстве CMYK.
Из-за распространенности компьютерных мониторов и цветной печати, RGB и цветовые пространства CMYK оба обычно используются, чтобы описать цвета. Однако, у обоих типов цветовых пространств есть фундаментальный недостаток — они являются зависящими от устройств. Синие чернила, используемые одним принтером, не могли бы точно соответствовать синие чернила, используемые другим. Точно так же цвет, описанный как цвет RGB, мог бы выглядеть синим на одном мониторе и багрянистый на другом.
Java 2-D API именует RGB и CMYK как типы цветового пространства. Определенная модель монитора с ее определенным фосфором определяет свое собственное цветовое пространство RGB. Точно так же у определенной модели принтера есть свое собственное цветовое пространство CMYK. Различный RGB или цветовые пространства CMYK могут быть связаны друг с другом через независящее от устройств цветовое пространство.
Стандарты для независящей от устройств спецификации цвета были определены Международной Комиссией по Освещению (CIE). Обычно используемое независящее от устройств цветовое пространство является цветовым пространством XYZ с тремя компонентами, разработанным CIE. Когда Вы определяете цветное использование CIEXYZ
, Вы изолируетесь от зависимостей от устройства.
К сожалению, это не всегда практично, чтобы описать цвета в CIEXYZ
цветовое пространство — есть допустимые причины представления цветов в других цветовых пространствах. Чтобы получить непротиворечивые результаты, когда цвет представляется, используя зависящее от устройств цветовое пространство, такое как определенное пространство RGB, необходимо показать, как то пространство RGB касается независящего от устройств пространства как CIEXYZ
.
Один способ отобразиться между цветовыми пространствами состоит в том, чтобы присоединить информацию к пробелам, которая описывает, как зависящее от устройств пространство касается независящего от устройств пространства. Эту дополнительную информацию вызывают профилем. Обычно используемый тип цветного профиля является Профилем Цвета ICC, как определено Международным Цветным Консорциумом. Для получения дополнительной информации см. Спецификацию Формата Профиля ICC, версия 3.4, доступная в http://www.color.org
.
Рисунок 6-3 иллюстрирует, как чистый цвет и отсканированное изображение передают к Java 2-D API, и как они выводятся на экран различными устройствами вывода. Как можно видеть в рисунке 6-3, у и входного цвета и изображения есть присоединенные профили.
Как только у API есть точно указанный цвет, он должен воспроизвести тот цвет на устройстве вывода, таком как монитор или принтер. У этих устройств есть собственные характеристики обработки изображений, которые должны быть приняты во внимание, чтобы удостовериться, что они приводят к корректным результатам. Другой профиль связывается с каждым устройством вывода, чтобы описать, как цвета должны быть преобразованы, чтобы привести к точным результатам.
Достижение непротиворечивого и точного цвета требует, чтобы и входные цвета и устройства вывода профилировались против стандартного цветового пространства. Например, входной цвет мог быть отображен от его исходного цветового пространства в стандартное независящее от устройств пространство, и затем отображен от того пространства до цветового пространства устройства вывода. Во многих отношениях преобразование цветов подражает преобразованию графических объектов в (x, y) координатное пространство. В обоих случаях преобразование используется, чтобы определить координаты в "стандартном" пространстве и затем отобразить те координаты на специфичное для устройства пространство для вывода.
Содержание | Предыдущий | Следующий |