Методы наиболее успешной практики для управления цветом в OS X и iOS
Этот документ обсуждает методы наиболее успешной практики для управления цветом в OS X и iOS.
Введение
Цвет имеет значение — часто резкое различие — на наших фотографиях, графике и других носителях. Точный цвет, соответствующий Ваши ожидания, может помочь Вам генерировать более привлекательные визуальные продукты и сократить затраты на разработку и расписания. Как можно сделать обоснованные решения во время разработки, таким образом, конечный результат соответствует намерения через все различные конфигурации клиенты могут иметь?
OS X и iOS обеспечивают устойчивое, стандартизированное решение для управления цветом, разработанного, чтобы дать Вам самое лучшее представление Ваших исходных носителей на всех различных устройствах и средах, с которыми Вы работаете. Существуют различные методы к тому, как это происходит, и они будут охвачены в этом документе.
Это управление цветом гарантирует цветную точность оригинала всюду по цифровому потоку операций - это поставляет цвет, точно представляющий оригинал. Цвета, которые камера производит путем взятия снимка данной сцены, будут воспроизведены искренне на дисплее и в законченном печатном продукте. Ваши цвета точно переводятся от одного устройства до другого через Ваш поток операций. Ваши цвета будут непротиворечивыми в течение долгого времени через носители, и через различные устройства. Это управление цветом предлагает лучшую цветную точность исходных носителей, замеченный ли на мониторе, распечатанном на настольном принтере или просматриваемом на мобильном устройстве.
Управление активным и выбранным цветом
Apple использует два разных подхода к управлению цветом - каждый - активное управление цветом, которое предоставлено в OS X. Активное управление цветом является динамическим процессом, применился к каждому пикселю в режиме реального времени на каждом кадре. Для каждого пикселя цветное соответствие выполняется от исходного пространства профиля содержания до целевого пространства, возможно с промежуточным пространством или рабочей областью (требующий дополнительного цветного соответствия) промежуточный. Этим согласованием цветов может быть GPU, ускоренный при рендеринге к дисплею, или векторизованный ускоренный на CPU, если не представляющем к дисплею (например, когда вывод отправки к диску). Это управление цветом обеспечивает формулу для выполнения цветного соответствия, и та формула применяется к каждому пикселю в различных платформах (Базовое Изображение, Базовая Анимация, ColorSync, Ускорьтесь и различные другие), и приложения.
OS X предоставляет Активному управлению цветом ColorSync. Активное управление цветом - все о гибкости. Это позволяет Вам использовать любое содержание и просматривать его на любом дисплее, конечно на настольной среде, где у Вас есть много различных дисплеев или другие формы устройств вывода, такие как принтеры.
Другой тип управления цветом, используемого Apple, является управлением выбранным цветом, которое является методом для применения управления цветом во время авторской разработки на Mac прежде, чем поставить содержание на iOS. Посмотрите управление выбранным цветом - iOS sRGB.
Выведите на экран отнесенную среду
Цель управления цветом ColorSync состоит в том, чтобы воспроизвести Авторское Намерение — что автор видел и подписал на их собственном дисплее или устройстве вывода. Эту форму управления цветом вызывают отнесенным выводом (при предназначении для дисплея, это можно также вызвать отнесенным дисплеем).
Авторское намерение
Создание пленочных изображений и другие формы носителей являются творческими усилиями. Это означает, что недавно зарегистрированная сцена обычно не распределяется как готовый продукт. Вместо этого этим управляют сначала (в отрасли, это вызывают синхронизацией цвета). Результатом является авторское намерение. Только после того, как сценой управляли к удовлетворенности автора, делает это распределяется.
Например, рассмотрите широковещательное видео. После того, как распределенный, широковещательное видео действительно только предназначается, чтобы посмотреться на на TV в определенной среде просмотра. Согласно стандартам, та среда просмотра является довольно темной гостиной эры 1950-х. Современное использование, конечно, очень отличается, и варьирование. Вы, вероятно, не просматриваете мультимедийный контент в своей гостиной на современной рабочей станции или персональном компьютере. Вместо этого у Вас, вероятно, есть большой, яркий дисплей. Существует еще больше сред. Существуют мобильные устройства, на которые Вы смотрите на открытом воздухе в свете, или можно смотреть на эти устройства в темной театральной среде. Ясно существует потребность произвести непротиворечивое цветное появление на различных устройствах в различных средах. Это - то, что управление цветом начинает решать.
Потоки операций управления цветом
Управление Преобразованиями цветов
Каков поток операций управления цветом?
Рисунок 1 иллюстрирует пример типичного потока операций для многих пользователей Mac.
Типичный поток операций запускается с трех устройств, обрабатывающих цифровые среды: камера, Mac и принтер. Изображения сначала загружаются с камеры, затем просмотрели на дисплее Mac и наконец распечатали на принтере. Ожидание является цветами, которые камера производит путем взятия снимка данной сцены, будет воспроизведен искренне на дисплее Mac. Точно так же, когда изображение распечатано, принтер отразит то, что было получено камерой. Другими словами, Вы ожидаете, что поток операций произведет непротиворечивый цвет через различные устройства. Это - то, о чем управление цветом - все:
Управление цветом = управляемое преобразование между различными цветными представлениями для достижения непротиворечивого цветного появления.
Этот поток операций может быстро стать очень сложным. Пользователь может ввести дополнительные цветные носители от сети и может представить это носители на других компьютерах как рабочие станции, ноутбуки и портативные устройства, такие как iPhone или iPad. Кроме того, цифровое видео могло бы быть добавлено к соединению - это имеет немного отличающиеся требования. В конце цель состоит в том, чтобы иметь непротиворечивое цветное появление через все устройства.


Возможности цвета устройства
Палитра устройства
Для репродуцирования цвета на различных устройствах, необходимо найти способ охарактеризовать цветные возможности любого из тех устройств. Палитра устройства срока описывает те цветные возможности. Данное устройство может только воспроизвести часть полного видимого участка спектра (все цвета, существующие в природе). Палитра устройства является всеми цветами, восстанавливаемыми устройством.
Проблема решить
Проблема, которая должна быть решена, состоит в том, как воспроизвести цвет на различных устройствах, зная, что палитра устройств отличается. В простом потоке операций сверху, существует три различных палитры; один каждый для камеры, дисплея и принтера. Скажем, Вы хотите воспроизвести цвет от камеры через все устройства. Можно выразить цветовое пространство любого данного устройства математически. Рисунок 2 показывает различные цветовые пространства для камеры (Adobe RGB), дисплей портативного компьютера Mac и струйный принтер.


Как Вы видите, цветовые пространства весьма отличаются. Можно преобразовать цвет от одного цветового пространства до другого посредством вызванного отображения палитры математического преобразования, но это действительно зависит, на которых цветах Вы пытаетесь воспроизвести. Вы ограничиваетесь, каким цветам устройство может представлять. Это имеет последствия с точки зрения организации Вашего потока операций. Например, когда проверка Вас должна иметь большого размера палитру на Вашем устройстве. Иначе, отображение палитры может привести к цветам, которые не корректны с точки зрения исходных данных.
Преобразования цветов нелинейны. Преобразование в меньшую палитру может нанести необратимый ущерб. Как только Вы преобразовываете вниз определенные цвета в этом способе, они останутся там. Давайте предположим, что Ваша камера получает синий цвет как показано на рисунке 3 ниже, и Вы хотите вывести на экран этот цвет через все свои устройства. Отображение палитры будет тайный это от палитры камеры до палитры дисплея портативного компьютера. Вы видите, что это приземляется в палитре дисплея после преобразования. Нет никакой проблемы, воспроизводящей его в различной палитре. То же является истиной, при попытке распечатать его.
Теперь предположите, что Ваша камера получает очень влажный зеленый. Проблемой является этот цвет, не существует в палитрах других двух устройств. То, что происходит, в этом случае цвет, продвинуто в палитре. В результате влажный зеленый становится несколько желтым. Это больше не тот же цвет, которым это было первоначально. В случае принтера цветовой сдвиг не является очень большим. Это все еще очень близко к исходному зеленому.
Это иллюстрирует важный тезис: преобразования цветов очень часто необратимы. Если Вы передаете неправильное цветовое пространство при разработке потока операций, можно потерять информацию о цвете.


Значения цвета в перспективе
Это иллюстрирует другой тезис. Значения цвета устройства RGB не являются тем же через различные цветовые пространства. Эти значения зависят от цветового пространства, в котором они определяются.
Например, если Вам дают некоторые значения устройства RGB, но Вы не знаете, из какого цветового пространства они произошли, они действительно ничего не говорят Вам. Рисунок 4 сравнивает эти два цветовых пространства, обсужденные ранее, Adobe RGB по сравнению с жидкокристаллическим дисплеем меньшего размера.
Как Вы видите, полностью влажный зеленый на дисплее портативного компьютера, RGB где-нибудь посреди схемы цветности. В отличие от этого, полностью влажный зеленый Adobe RGB высок в зеленых. Это не те же цвета даже при том, что значения RGB являются тем же. Это подчеркивает важность знания, куда значения цвета прибывают из.
Заключение, которое будет нарисовано из этого, является значениями цвета, только значимы, когда они тегируются с надлежащим профилем.


Активное управление цветом с ColorSync
ColorSync является системой управления цветом, предоставленной в OS X. Это - реализация OS X спецификации International Color Consortium (ICC), обеспечивая управление цветом системного уровня изображений, документов и устройств. ColorSync состоит из нескольких частей как показано на рисунке 5.
Это включает модуль управления цветом (CMM). Это - математический механизм, преобразовывающий цветные данные от одного устройства до другого. OS X поставляет CMM по умолчанию, Apple CMM, как часть ColorSync. ColorSync также обеспечивает сменную архитектуру для CMM's. Если Вы записали пользовательский CMM для использования в приложении существует определенный сменный API для вызова его.
ColorSync использует профили ICC для согласования цветов или преобразования цветов через различные цветовые пространства. Профили ICC характеризуют устройства с точки зрения цветных возможностей. Они содержат математические примитивы, описывающие, как преобразовать данные между цветовым пространством устройства, и ссылочное цветовое пространство вызвало пространство соединения профиля (PCS). PCS является независящим от устройств цветовым пространством, использованным как промежуточное звено при преобразовании от одного зависящего от устройств цветового пространства до другого. Colorsync включает профили для различных цветовых пространств с OS X, и можно добавить собственные профили также.
ColorSync имеет базу данных интеграции устройств. Каждое устройство, подключенное к Mac, будет зарегистрировано в базе данных интеграции устройств. Это предоставляет возможность для разработчиков устройства для интеграции их устройства и любых связанных профилей с ColorSync. Если производитель устройств обеспечивает фабрику, ICC профилирует, они будут зарегистрированы в базе данных интеграции устройств для использования по мере необходимости. Кроме того, пользователь может присвоить пользовательские профили устройству.


Как выполняет работу ColorSync?
Считайте изображение взятым от цифрового фотоаппарата. Изображение будет содержать профиль, характеризующий то цветовое пространство. Профили содержат теги, описывающие, как преобразовать данные между цветовым пространством устройства и PCS. Пробелы соединения профиля основываются на пробелах, полученных из цветового пространства CIE. ColorSync поддерживает два из этих пробелов, XYZ и L*a*b. Цветовые пространства CIE могут полностью представлять все видимые цвета, таким образом гарантируя, что нет никаких ошибок, понесенных во время процесса.
Профиль, связанный с изображением и описывающий характеристики устройства, на который создавалось изображение, вызывают исходным профилем. Отображение изображение требует другого профиля, связанного с устройством вывода, таким как дисплей. Профиль для устройства вывода вызывают целевым профилем. Если изображение предназначено для дисплея, цветное соответствие выполняется CMM с помощью профиля дисплея (целевой профиль) вместе с профилем источника изображения для соответствия цветов изображения к палитре дисплея. Для выполнения цветного соответствия CMM создает преобразование, преобразовывающее цветные данные от исходного устройства до места назначения через PCS. Посмотрите рисунок 6.
Этот поток операций может быть повторен для многих различных устройств. Например, можно отсканировать изображение на сканере и просмотреть его на дисплее. Если изображение будет распечатано, то согласование цветов ColorSync будет использовать профиль принтера для соответствия цветов изображения к принтеру. Если у Вас есть должным образом созданный профиль, можно проанализировать все свойства принтера, и прежде, чем фиксировать чернила на бумаге (который может быть дорогостоящим), можно моделировать принтер с помощью профиля принтера. Это вызывают мягкой проверкой. Мягкая проверка позволяет Вам просматривать на Вашем компьютерном мониторе, на что будет похожа Ваша распечатка, когда это будет на определенной бумаге. Комбинация бумаги и чернил определяется профилем, который Вы или кто-то еще сделали для своей комбинации бумаги для принтера и чернил. Когда профиль принтера сделан, цвет бумаги является одним из факторов, изображающимся в профиль. Если Вы в состоянии просмотреть свое изображение через профиль принтера, Вы видите, как та определенная комбинация чернил и бумаги воспроизведет его, принимая во внимание палитру, а также другие характеристики используемых чернил.

Платформы для Согласования цветов при Рендеринге к Дисплею
OS X предлагает много платформ, выполняющих ускоренное GPU согласование цветов при рендеринге к дисплею. Вот краткий обзор:
2D кварц (базовая графика)
Кварц 2D API является частью Базовой Графической платформы (CoreGraphics.framework). 2D кварц является усовершенствованным, двумерным механизмом получения. 2D кварц обеспечивает низкий уровень, легкий 2D рендеринг с усовершенствованным управлением цветом, обеспечивающим несопоставленную выходную точность независимо от дисплея или печатающего устройства.
Базовая анимация
Базовая Анимация является графической инфраструктурой рендеринга и анимации, которую Вы используете для анимации представлений и других визуальных элементов приложения. С Базовой Анимацией большая часть работы, требуемой нарисовать каждый кадр анимации, выполнена для Вас. Все, что необходимо сделать, конфигурируют несколько параметров анимации, и Базовая Анимация делает остальных, передавая большую часть фактической работы получения к встроенному аппаратному обеспечению машинной графики для ускорения рендеринга. Это автоматическое графическое ускорение приводит к высоким частотам кадров и плавным анимациям, не обременяя CPU и замедляя Ваше приложение. Управление цветом применяется по мере необходимости.
Базовое изображение
Базовое Изображение является технологией обработки изображений и анализа, разработанной для обеспечения псевдореального времени, обрабатывая для неподвижных изображений и видеоизображений. Это воздействует на типы данных image от Базовой Графики, Базового Видео и Изображения платформы I/O, с помощью или GPU или пути рендеринга CPU. Базовое Изображение скрывает подробные данные обработки низкокачественной графики путем обеспечения простого в использовании прикладного программного интерфейса (API), таким образом, Вы не должны знать, что подробные данные OpenGL эффективно используют питание GPU. Весь pipleline является цветом, которым управляют.
Основа AV
Основа AV является мощной платформой для игры и создания основанных на времени аудиовизуальных носителей. Это позволяет Вам добавлять воспроизведение аудио и воспроизведение видео, получение, и кодирующий к Вашему приложению. Это поставляет эффективное воспроизведение носителей и обеспечивает ускоренный GPU, цвет управлял видео конвейером. Основа AV автоматически применяет управление цветом к видео на вводе, во время воспроизведения, и на выводе. Для получения дополнительной информации посмотрите Техническое примечание TN2227: Видео управление цветом в Основе AV и QTKit.
Набор приложения
Платформа Набора Приложения содержит объекты, необходимо реализовать графический, событийно-управляемый пользовательский интерфейс. Набор Приложения обрабатывает все подробности для Вас, поскольку он эффективно привлекает экран. AppKit также окрашивают, управляет всеми интерфейсными элементами, которые Вы обычно используете в своих окнах.
Платформы для Согласования цветов, если не Представляющего к Дисплею
Можно использовать vImage платформу для выполнения CPU ускоренное (векторизованное) согласование цветов, если не представляющее к дисплею:
vImage
vImage является основанной на CPU, высокоэффективной платформой обработки изображений. Это - подплатформа Ускорять платформы. vImage использование платформы векторизовало код, использующий модули вектора Single Instruction Multiple Data (SIMD), когда доступно. Это использует лучший код для аппаратных средств, на которых это работает способом, абсолютно очевидным для вызывающего приложения. Это включает высокоуровневые функции для обработки изображения — свертки, геометрические преобразования, операции гистограммы, морфологические трансформации, и альфа-составление композита — а также служебные функции для преобразований формата и других операций.
Управление цветом - выбор платформы
OS X реализован как ряд уровней. Нижние уровни системы предоставляют фундаментальные услуги, на которые полагается все программное обеспечение. Необходимо обычно использовать абстракцию высшего уровня, доступную, который позволяет Вам выполнять задачи, которые Вы хотите; помните, что высокоуровневые платформы упрощают Вашу работу и, поэтому, обычно предпочитаются.
Существует много высокоуровневых платформ в OS X, интегрированном с ColorSync, предлагающими автоматическое управление цветом. Они обсуждены ниже в цвете Управляемых Платформ - Интегрированный с ColorSync. Гарантировать Ваше содержание - должным образом цветное управляемый при использовании этих платформ, за которыми необходимо следовать, инструкции обсудили в цвете Управляемые Платформы - Ответственность.
При использовании низкоуровневой платформы необходимо явно выполнить управление цветом до рендеринга. Посмотрите Нецветные Управляемые Платформы.
Цветные управляемые платформы - интегрированный с ColorSync
OS X предлагает автоматическое управление цветом через платформы, интегрированные с ColorSync. Вот список нескольких современных платформ для обработки цветных носителей, тесно интегрирующихся с управлением цветом, предоставленным ColorSync:
Кварц (базовая графика)
Изображение I/O
Захват изображения
Основа AV
Печать
Подробные данные об аспектах управления цветом этих платформ описаны ниже:
Кварц (базовая графика)
Кварц предоставляет рендерингу усовершенствованное управление цветом. Кварц определяет много основных объектов, позволяющих Вам описывать и смесевой цвет. Вот объекты, принадлежащие цвету:
CGColorSpaceRefCGColorRefCGImageRefCGContextRef
Первое CGColorSpace. CGColorSpace объект позволяет Кварцу интерпретировать Ваши цветные данные.
Цветовые пространства могут быть созданы много различных путей, но здесь являются простым API:
Перечисление 1 , Создающее цветовое пространство.
CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); |
Цветовые пространства могут также быть созданы непосредственно от профиля ICC:
Перечисление 2 , Создающее цветовое пространство от профиля ICC.
CGColorSpaceRef colorspace = CGColorSpaceCreateWithICCProfile(<#Data containing the ICC Profile#>); |
CGColorRef объект содержит ряд компонентных значений (такой как красный, зеленый, и синий), которые уникально определяют цвет и цветовое пространство, указывающее, как должны быть интерпретированы те компоненты.
Перечисление 3 , создающее a CGColorRef.
CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); |
if (colorspace != NULL) |
{ |
CGFloat comp[4] = {0.5, 1.0, 0.7, 1.0}; // Last component is alpha |
// Create CGColorRef |
CGColorRef color = CGColorCreate(colorspace, comp); |
// do something with CGColorRef here. |
CGColorRelease(color); // Release CGColorRef when done |
// Release CGColorSpaceRef when done |
CGColorSpaceRelease(colorspace); |
} |
CGImageRef
CGImage состоит из a CGColorSpaceRef и массив значений компонентов, организованных в строках и столбцах. Эти значения компонентов соответствуют основным устройствам цветового пространства.
Перечисление 4 , создающее CGImage.
CGImageRef image = CGImageCreate(width, |
height, |
... |
... |
colorSpace, |
... |
renderingIntent); |
Создать a CGImageRef от файла образа на диске можно сделать следующим образом:
Перечисление 5 создает a CGImageRef от файла образа на диске.
CFURLRef path = <#A path to an image#>; // Path to image |
CGImageSourceRef imageSource = CGImageSourceCreateWithURL( path, NULL ); |
// Make sure the image source exists before continuing |
if (imageSource != NULL) |
{ |
// Create an image from the first item in the image source. |
CGImageRef myImage = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL); |
// do something with CGImageRef here. |
CGImageRelease(myImage); // Release CGImageRef when done |
// Release CGImageSourceRef when done |
CFRelease(imageSource); |
} |
Точно так же с блоком сжатых данных изображения в памяти:
Перечисление 6 создает a CGImageRef от данных изображения в памяти.
CFDataRef data = <#Your image data#>; |
CGImageSourceRef imageSource = CGImageSourceCreateWithData(data, NULL); |
// Make sure the image source exists before continuing |
if (imageSource != NULL) |
{ |
// Create an image from the first item in the image source. |
CGImageRef myImage = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL); |
// do something with CGImageRef here. |
CGImageRelease(myImage); // Release CGImageRef when done |
// Release CGImageSourceRef when done |
CFRelease(imageSource); |
} |
CGContextRef
CGContextRef представляет Кварц 2D место назначения получения. Графический контекст содержит параметры получения, и вся специфичная для устройства информация должна была представить краску на странице месту назначения, является ли место назначения окном в приложении, растровом изображении, документе в формате PDF или принтере.
Перечисление 7 , Вовлекающее графический контекст.
CGContextRef cgcontext = <#A graphics context#> |
CGContextDrawImage(cgcontext,...); |
... |
CGContextStrokeRect(cgcontext,...); |
CGContextFillRect(cgcontext,...); |
Кварц обеспечивает функции создания для различных разновидностей Кварцевых контекстов графики включая растровые изображения и PDF. Старшее значащее различие между различными типами контекстов существуют некоторые, которые содержат их собственное цветовое пространство и других, не требующих преобразования цветов, потому что они записывают контексты.
Эти контексты позволяют Вам указать a CGColorSpace:
CGBitmapContextCGWindowContext
И они не делают:
CGPDFContextCGPostScriptContext
Можно создать контекст с определенным цветовым пространством и вовлечь содержание в него со многими типами цвета. Автоматическое управление цветом выполняется в графическом контексте если контекст CGColorSpace отличается от источника CGColorSpace. Например, можно создать sRGB контекст и вовлечь изображение CMYK в него и составной объект это с монохромом или некоторым другим цветом. В этом сценарии, так как цветовое пространство места назначения контекста отличается, чем исходная Графика Ядра автоматически вызовет ColorSync и выполнит необходимую коррекцию цвета.
Другие платформы в Кварце
Базовая анимация
Базовая Анимация является другой платформой в Кварце. Базовая Анимация будет использовать в своих интересах GPU при рисовании изображений и использовать управление цветом. Все, что необходимо сделать, присваивают содержание Базового Слоя анимации к изображению.
Перечисление 8 Используя GPU, когда получение a CGImageRef в окно (NSView).
[NSView layer].contents = <#CGImageRef to display#>; // set layer contents to CGImageRef |
Базовое изображение
Базовое Изображение является платформой обработки изображений, позволяющей Вам изображениям на дисплее и цветному преобразованию их очень быстро использование GPU. Базовое Изображение обеспечивает доступ к встроенным фильтрам обработки изображений и возможности объединить многократные фильтры в цепочку вместе для создания пользовательских эффектов.
Вот то, как объединить два фильтра в цепочку вместе и применить их к изображению:
Перечисление 9 основы применения фильтров к изображению.
CIImage* image = [CIImage imageWithContentsOfURL: <#NSURL location of the file#>]; |
if (image != NULL) |
{ |
image = [[[CIFilter filterWithName:@"CISepiaTone" keysAndValues: |
kCIInputImageKey, image, |
kCIInputIntensityKey, [NSNumber numberWithFloat:1.0], nil] |
valueForKey: kCIOutputImageKey]; |
image = [[[CIFilter filterWithName:@"CIHueAdjust" keysAndValues: |
kCIInputImageKey, image, |
kCIInputAngleKey, [NSNumber numberWithFloat:1.57], nil] |
valueForKey: kCIOutputImageKey]; |
[context drawImage: image atPoint:CGPointZero fromRect:[image extent]]; |
} |
Изображение I/O
Изображение платформа I/O позволяет приложениям читать и писать большинство форматов файла образа. Это очень эффективно, предоставляет легкий доступ к метаданным и обеспечивает управление цветом.
Много форматов файлов позволяют Вам непосредственно встраивать цветовой профиль для охарактеризования изображения. Когда Изображение, I/O читает файл образа, оно получит всю цветную метрическую информацию, содержавшуюся в любом встроенном цветовом профиле или метаданных, и создаст a CGColorSpace. Вы как программист не должны волноваться об этом.
CGColorSpace создаваемый из встроенного профиля или метаданных.
Изображение платформа I/O обеспечивает непрозрачные типы данных для чтения данных изображения из источника (CGImageSourceRef):
Перечисление 10 Читая данные изображения - Создает a CGImageSourceRef и получите a CGImageRef.
CFURLRef path = <#A path to an image#>; // Path to image |
CGImageSourceRef imageSource = CGImageSourceCreateWithURL( path, NULL ); |
// Make sure the image source exists before continuing |
if (imageSource != NULL) |
{ |
// Create an image from the first item in the image source. |
CGImageRef myImage = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL); |
// do something with CGImageRef here. |
CGImageRelease(myImage); // Release CGImageRef when done |
// Release CGImageSourceRef when done |
CFRelease(imageSource); |
} |
и запись данных изображения месту назначения (CGImageDestinationRef):
Перечисление 11 Пишущий данные изображения - Создает a CGImageDestinationRef в указанном формате файла и добавляют a CGImageRef.
CFURLRef url = <#URL of image destination#>; |
CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL(url, kUTTypePNG, 1, NULL); |
// Make sure the image destination exists before continuing |
if (myImageDest != NULL) |
{ |
CGImageRef image = <#Image to add#>; |
// Add an image to the image destination |
CGImageDestinationAddImage(myImageDest, image, NULL); |
CGImageDestinationFinalize(myImageDest); |
CFRelease(myImageDest); |
} |
Вы создаете изображение из источника изображения с функциями как CGImageSourceCreateImageAtIndex, который получит любую информацию о согласовании цветов в изображении и создаст надлежащее CGColorSpace.
Место назначения изображения абстрагирует задачу записи данных и избавляет от необходимости Вас управлять данными через необработанный буфер. Вы создаете место назначения изображения с функциями как CGImageDestinationCreateWithURL или CGImageDestinationCreateWithData. После создания места назначения изображения можно добавить изображение к нему путем вызова CGImageDestinationAddImage или CGImageDestinationAddImageFromSource функции. Вызывание функции CGImageDestinationFinalize I/O Изображения сигналов, что Вы закончены, добавив изображения.
Захват изображения
Другой важной платформой с точки зрения управления цветом является Захват изображения.
Захват изображения позволяет Вам получать изображения непосредственно от камер и сканеров. Это основывается на Изображении I/O.
Захват изображения состоит из платформы ImageKit и платформы ImageCaptureCore. Высокоуровневые классы захвата изображения в платформе ImageKit позволяют Вам создавать приложения, управляющие камерами и сканерами полностью путем перетаскивания элементов в Интерфейсном Разработчике, буквально не пишущий строку кода.
Следующие классы ImageKit являются всем цветом, которым управляют к текущему дисплею:
IKDeviceBrowserViewIKCameraDeviceViewIKScannerDeviceViewIKImageView
Подобные классы в платформе ImageCaptureCore обеспечивают эквивалентные возможности быстро найти и управлять камерами и сканерами, но без встроенного UI, позволяя Вам записать бездисплейные приложения или обеспечить Ваш собственный UI. Используйте следующие классы ImageCaptureCore для управления камерой низшего уровня:
ICDeviceBrowserDelegateICCameraDeviceDelegateICScannerDeviceDelegateICCameraDeviceDownloadDelegate(например, для загрузки изображений)
Для тех форматов файлов, не содержащих цветную метрическую информацию, Захват изображения будет использовать ColorSync для запросов Базы данных Интеграции устройств для определения надлежащего профиля, чтобы присвоиться к изображению и создать a CGColorSpace от него. Захват изображения будет также цветные изображения преобразования для дисплея.
Основа AV
Основа AV является платформой для игры и создания основанных на времени аудиовизуальных носителей. Можно использовать его, чтобы исследовать, создать, отредактировать, или повторно закодировать медиа-файлы. Можно также получить введенные потоки от устройств и управлять видео во время получения в реальном времени и воспроизведения.
Платформа Основы AV автоматически применяет управление цветом к видео на вводе, во время воспроизведения, и на выводе. Для получения дополнительной информации посмотрите Техническое примечание TN2227: Видео управление цветом в Основе AV и QTKit.
Набор приложения
Набор Приложения является платформой, содержащей объекты, необходимо реализовать графический, событийно-управляемый пользовательский интерфейс. Набор Приложения обрабатывает все подробности для Вас, поскольку он эффективно привлекает экран. AppKit также окрашивают, управляет всеми интерфейсными элементами, которые Вы обычно используете в своих окнах.
Для вовлечения окна с помощью платформ OS X в Кварце, необходимо будет получить доступ CGContextRef для окна. Вот то, как:
Перечисление 12 получает CGContextRef для окна.
CGContextRef cgcontext = [[NSGraphicsContext currentContext] graphicsPort]; |
Когда окно создается, AppKit автоматически устанавливает цветовое пространство запоминающего устройства окна. В OS X графический контекст подключен к запоминающему устройству окна. По умолчанию контекст окна тегируется с текущим профилем дисплея. Однако в определенных ситуациях цветовое пространство может быть изменено приложением:
Перечисление 13 , Устанавливающее цветовое пространство окна.
NSWindow *myWindow = <#Your window#> |
[myWindow setColorSpace: [NSColorSpace sRGBColorSpace]]; |
Вы можете, тогда может нарисовать различные типы изображений и составить их вместе к этому контексту графики окна, и Ваше пространство пользовательского цвета будет использовано. Посмотрите рисунок 8.


Можно также зарегистрироваться для уведомлений изменения дисплея (NSWindowDidChangeScreenProfileNotification):
Регистр перечисления 14 для уведомления изменения дисплея.
NSWindow *myWindow = <#Your window#> |
[myWindow setDisplaysWhenScreenProfileChanges:YES]; |
Уведомление изменения дисплея отправляется каждый раз, когда изменяется профиль дисплея для экрана, содержащего окно. Это уведомление отправляется, только если возвращается окно YES от NSWindow displaysWhenScreenProfileChanges метод как показано здесь:
Перечисление 15 Указывает, должен ли контекст окна быть обновлен, когда экранный профиль изменяется или когда окно перемещается в различный экран.
- (BOOL)displaysWhenScreenProfileChanges |
{ |
return YES; |
} |
NSWindowDidChangeScreenProfileNotification может быть отправлен, когда большинство окна перемещено в различный экран (чей профиль также отличается от предыдущего экрана), или когда ColorSync профилируют для текущих экранных изменений.
Если Вы кэшируете информацию, связывающуюся к дисплею, необходимо отбросить его для обеспечения надлежащего согласования цветов содержания.


После того, как контекст окна обновляется, окну говорят вывести на экран себя. Если необходимо обновить внеэкранные кэши для окна, необходимо зарегистрироваться для получения NSWindowDidChangeScreenProfileNotification уведомление.
Пример - Что происходит в Приложении с помощью Цветных Управляемых Платформ
Давайте поместим это все вместе и посмотрим то, что происходит в простом приложении, получающем изображение от камеры.
Если приложение использует Захват изображения для получения изображения (как a CGImageRef), это будет должным образом тегировано и содержать всю необходимую цветную метрическую информацию (см. предыдущий раздел Image Capture). Посмотрите рисунок 10.
Если приложение тогда хочет нарисовать изображение на экране, это просто вызывает надлежащие Кварцевые функции для выполнения получения; никакие дальнейшие шаги не необходимы. Кварц будет консультироваться с ColorSync, чтобы найти надлежащий профиль дисплея и преобразовать данные изображения в цветовое пространство профиля дисплея, чтобы гарантировать, что это выведено на экран правильно. Посмотрите рисунок 10.
Печать изображения является подобным процессом. При использовании CUPS Вы не должны даже знать, какой принтер пользователь выбрал. Архитектура печати CUPS определит надлежащий профиль для выбранного принтера, и преобразует данные и распечатает задание. Посмотрите рисунок 10.
Таким образом, OS X обеспечивает автоматическое управление цветом через различные платформы, интегрированные с ColorSync.


Цветные управляемые платформы - Ваша ответственность
Как обсуждено в цвете Управляемые Платформы - Интегрированный с ColorSync, высокоуровневые платформы OS X, интегрированные с ColorSync, обеспечивают автоматическое управление цветом. Однако у Вас все еще есть некоторая ответственность гарантировать, что Ваше содержание должным образом цветное управляемый при использовании этих платформ:
Пиксельные Буферы должны быть Тегированы
Если Вы работаете с пиксельными буферами явно, необходимо удостовериться, что у них есть a CGColorSpace присоединенный к ним (термин тегирование используется для описания этого). Если Ваше приложение синтезирует эти буферы, тегирование пиксельных буферов особенно важно.
При чтении пиксельных буферов из Базовых Носителей, Основы AV, ImageIO или другой платформы, или даже из другого приложения, возможности, они уже тегируются - если взято от медиа-файла, файлу, вероятно, свяжут тег с ним. Тем не менее, это - хорошая практика, чтобы проверить их программно и удостовериться, что они тегируются. Пиксельные данные, который не тегируется, считают неопределенными, и могут заставить Ваши цвета выходить, выглядя неправильными. Это - хорошая практика, чтобы удостовериться, что все тегируется, даже программно. Немаркированное содержание должно быть тегировано с чем-то, и необходимо будет определить то, что является самым надлежащим. Например, если у Вас есть немаркированное содержание, предназначенное для сети или PC, возможности - он, должен быть тегирован как sRGB.
Графические Контексты должны быть полностью указаны
Платформы OS X очень часто требуют, чтобы Вы установили графический контекст. Удостоверьтесь, что Ваши контексты полностью указаны с надлежащим цветовым пространством, чтобы быть должным образом цветные управляемый.
Использование устройства, которое окрашивает RGB, проблематично
Значения устройства RGB без любой информации о цветовом пространстве действительно ничего не говорят Вам. Цвета, произведенные RGB (и CMYK), являются определенными для устройства. Поскольку их цветное появление зависимо от устройств, эти пробелы являются фактически худшим выбором для верного цветного воспроизведения через различные устройства. Устройства (дисплеи, принтеры, сканеры, камеры) не обрабатывают цвет тот же путь; у каждого есть его собственный диапазон цветов, которые устройство может произвести искренне. Цвет, произведенный на одном устройстве, не мог бы быть в состоянии быть произведенным на другом устройстве. Поэтому устройству использование цвета RGB строго обескураживают. Не ожидайте непротиворечивые результаты при использовании устройства цвета RGB с платформами OS X, потому что каждая отдельная платформа может обработать их по-другому.
Нецветные управляемые платформы
Если Вы будете работать с более низкой платформой уровня, то необходимо будет обеспечить собственное явное управление цветом до рендеринга.
vImage
С vImage можно выполнить явное управление цветом изображений. Особенно интересный относительно управления цветом функции преобразования формата и трансформация. Операции преобразования изображений изменяют значения пикселей в изображении, как определено пользовательскими функциями, предоставленными как обратный вызов. С vImage можно использовать операции преобразования изображений на следующих видах функций:
Умножение матриц
Преобразование цветового пространства
Оттенок, насыщенность, яркость
Цветовые эффекты
Гамма-коррекция
Вы используете a vImageConverter возразите для преобразования изображения от одного формата до другого. A vImageConverter взаимодействует с Базовой Графикой путем поддержки CGImageRef объект. Использовать a vImageConverter Вы определяете a vImage_CGImageFormat структура, описывающая Ваш формат изображения. vImage_CGImageFormat структура определяет упорядочивание цветовых каналов, сколько существует, размер и тип данных в цветовых каналах, предварительно ли данные умножаются на альфу или нет, и модель цветового пространства для пиксельных данных. Этот формат зеркально отражает дескрипторы формата изображения, используемые CoreGraphics для создания вещей как CGImageRef и CGBitmapContextRef:
Перечисление 16 vImage_CGImageFormat структура.
typedef struct |
{ |
uint32_t bitsPerComponent; /* # bits in each color channel */ |
uint32_t bitsPerPixel; /* # of bits in each pixel. */ |
CGColorSpaceRef colorSpace; /* color space model for the pixels */ |
CGBitmapInfo bitmapInfo; /* describes the color channels */ |
uint32_t version; /* Reserved for future expansion */ |
const CGFloat *decode; /* Decode parameter */ |
CGColorRenderingIntent renderingIntent; /* See CGColorSpace.h */ |
}vImage_CGImageFormat; |
функции vImage используют a vImage_Buffer структура, чтобы получить и предоставить пиксельные данные. vImage_Buffer содержит указатель на пиксельные данные, высоту и ширину буфера и число байтов в пиксельной строке. Следующий пример показывает, как инициализировать a vImage_Buffer из нужного формата, от файла сослан a CFURLRef:
Перечисление 17 , инициализирующее a vImage_Buffer из нужного формата.
CFURLRef url = <#A url to your source image file#>; |
CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, NULL); |
CGImageRef image = CGImageSourceCreateImageAtIndex( imageSource, 0, NULL ); |
vImage_Buffer result; |
vImage_CGImageFormat format = { |
.bitsPerComponent = (uint32_t) CGImageGetBitsPerComponent(image), |
.bitsPerPixel = (uint32_t) CGImageGetBitsPerPixel(image), |
.bitmapInfo = CGImageGetBitmapInfo(image), |
.colorSpace = CGImageGetColorSpace(image) |
}; // .version, .renderingIntent and .decode all initialized to 0 per C rules |
vImage_Error err = vImageBuffer_InitWithCGImage( &result, &format, NULL, image, kvImageNoFlags ); |
A vImageConverter объект используется для преобразования изображения. A vImageConverter объект создается путем указания источника и места назначения vImage_CGImageFormat, дополнительно с пользовательским цветовым пространством преобразовывают. Перечисление 18 показывает, как создать a vImageConverter, и использует цветовое пространство, преобразовывают Вас передача в. Это дает Вам больший контроль над мелкими деталями преобразования цветового пространства для того, чтобы взыскивать цветную точность.
Перечисление 18 , создающее a vImageConverter.
CFArrayRef profileSequence = <#A set of profiles to be used in the transform#>; |
CFTypeRef codeFragment = NULL; |
/* transform to be used for converting color */ |
ColorSyncTransformRef transform = ColorSyncTransformCreate (profileSequence, NULL); |
/* get the code fragment specifying the full conversion */ |
codeFragment = ColorSyncTransformCopyProperty(transform, kColorSyncTransformFullConversionData, NULL); |
if (transform) CFRelease (transform); |
vImage_CGImageFormat inpFormat = { /* Your source image format */ }; |
vImage_CGImageFormat outFormat = { /* Your output image format */ }; |
vImage_Error err; |
/* create a converter to do the image format conversion. */ |
vImageConverterRef converter = vImageConverter_CreateWithColorSyncCodeFragment( codeFragment, &inpFormat, &outFormat, NULL, kvImageNoFlags, &err ); |
Вы вызываете vImageConvert_AnyToAny функция с соответственно сконфигурированным vImageConverter преобразовать изображение.
Перечисление 19 , Преобразовывающее изображение с vImageConvert_AnyToAny функция.
vImageConverterRef converter = <#A configured image converter#>; |
vImage_Buffer srcBuf = <#an array of vImage_Buffer structs describing the source data planes#>; |
vImage_Buffer destBuf = <#an array of vImage_Buffer structs describing the destination data planes#>; |
vImage_Error err; |
err = vImageConvert_AnyToAny(converter, & srcBuf, & destBuf, NULL, kvImageNoFlags ); |
Наконец, вызовите vImageCreateCGImageFromBuffer функция для создания a CGImageRef от данных преобразованного изображения в vImage_Buffer.
Вызов перечисления 20 vImageCreateCGImageFromBuffer создать a CGImageRef от данных преобразованного изображения.
vImage_Error err; |
vImage_Buffer destBuf = <#A buffer with the converted image data#>; |
vImage_CGImageFormat outFormat = { /*The output image format */ }; |
CGImageRef outImage = vImageCreateCGImageFromBuffer( &destBuf, &outFormat, NULL, NULL, kvImageNoAllocate, &err ); |
OpenGL - Явный пример управления цветом
OpenGL не является цветом, которым управляют. Как следствие это могло бы потребовать дополнительному усилию разработать решения определенных цветных проблем, с которыми можно встретиться при использовании его. Основной проблемой является OpenGL, имеет один ряд допущений, и дисплейный буфер имеет другого.
OpenGL имеет модель линейного света. Например, при применении оттенка garoud к сцене в OpenGL, Вы работаете с моделью линейного света.
OpenGL имеет значения RGB, но они не RGB, определенный ни в какой определенной палитре.
Дисплейный буфер является в основном гаммой sRGB 2.2.
Как Вы идете от OpenGL линейная модель во что-то, что подходяще для дисплейного буфера? Существует две различных стратегии, которые можно взять: простой и одно немного более сложное.
Опции OpenGL для простого управления цветом - ничего не делают
Самый простой подход всех ничего не должен делать.
Что означает то, если Вы ничего не делаете? Это означает помещение данных линейного света в 2,2 гамма буфера. Неявно, это обеспечит гамма повышение. Гамма 2,2 является большим повышением. Это будет намного более контрастно, чем Вы ожидали бы. Если Вы будете работать с моделями распространения света, то Вы получите освещение, которое действительно неожиданно. Это не будет, вероятно, похоже на среду, для которой Вы пытаетесь предназначаться. Это также может быть в порядке, если Вы жили с ним являющийся контрастным, это прекрасно. Или могут быть обстоятельства, где это может даже быть корректная вещь.
Не все используют OpenGL, чтобы сделать 3D. Много людей использует OpenGL, чтобы сделать простое составление композита. Если Вы составляете содержание, которое является базируемым sRGB, это уже - 2,2 гаммы, и это может прекрасно подойти, чтобы составить его и поместить его в 2,2 буфера. Это фактически выйдет, выглядя корректным.
Обеспечьте 1.0-> 2,2 гамма преобразования в программе построения теней
Следующая самая простая вещь сделать (который может быть тривиальным, если Вы уже используете программы построения теней) состоит в том, чтобы обеспечить компонент гамма-коррекции коррекции цвета. Это - то, что изменяет контраст (также названный тональностью). Это - фактически большее, более перцепционно значимый фактор, чем аспект коррекции цвета.
Математическая часть гамма-коррекции может быть описана как чистая функция питания. Вы берете пиксельное значение (в этом случае, это - значение с плавающей точкой между 0 и 1), и возведите его в степень. То питание, оказывается, отношение исходной гаммы к целевой гамме. В вышеупомянутом примере OpenGL исходная гамма 1.0, и целевая гамма 2.2, таким образом отношение 1 более чем 2,2. См. Перечисление 21.
Оказывается, что функция питания на многом GPU’s является очень дорогой. Можно упростить его как квадратный корень. Квадратный корень повышает значение до 1 более чем 2,2 питания. Это не совсем точно, но это очень близко, и - то, что используют много игр OpenGL.
Перечисление 21 Обеспечивает 1.0-> 2,2 преобразования только для гаммы через программу построения теней.
result = pow(fvalue, (source / destination)); |
result = sqrt(fvalue); // approximation |
Опции OpenGL для усовершенствованного управления цветом
Эта опция фактически довольно проста при использовании надлежащей платформы. При использовании AppKit можно очень легко получить доступ к запоминающему устройству Менеджера окон и установить цветовое пространство на нем с помощью метода, описанного в Перечислении 13.
Менеджер окон будет тогда использовать базируемое цветное соответствие программы построения теней для Вас. Это может не быть самый эффективный метод, но это, вероятно, достаточно для большинства.
Наконец, Вы можете explicity вызывать ColorSync для получения самого лучшего результата. Просто вызовите ColorSync и передайте его Ваш исходный профиль и целевой профиль. Это возвратит Вам «рецепт» для выполнения коррекции цвета. Тот рецепт фактически имеет линеаризацию, преобразование цветов (3x3 матрица преобразования) и гамма.
Перечисление 22 Создает программу построения теней для применения линеаризации ColorSync, преобразования цветов и гамма рецепта.
FragmentInfo = ColorSyncTransformCopyProperty (transform, kColorSyncTransformFullConversionData, NULL); |
Если Вам нравится, можно объединить все те операции в 3D таблицу поиска. Это фактически, что происходит в управлении цветом многих платформ OS X и приложений.
Управление выбранным цветом - iOS sRGB
разработка приложения для iOS использует модель управления выбранного цвета. Ваше содержание является соответствующим к sRGB цветовому пространству на авторской платформе. Это соответствие не выполняется динамично на устройстве на iOS. Вместо этого это происходит во время авторской разработки на Вашем рабочем столе Mac OS X. Управление выбранным цветом подобно тому, что видео отрасль традиционно сделала в предназначении для видео С высоким разрешением (HD), где исходное содержание преобразовывается к цветовому пространству HD. Тот путь, когда содержание представляется на HD, ничего не выводит на экран, далее должен быть сделан.
Управление выбранным цветом может также произойти при синхронизации содержания к мобильному устройству. Фактически, iTunes, работающий на рабочем столе, обеспечивает управление цветом для пространства выбранного цвета iOS при синхронизации содержания с iPhoto на устройство на iOS.
Управление выбранным цветом на iOS сохраняет огромные суммы питания, расширяющего время выполнения и нетрудности другие ценные ресурсы как GPU для выполнения других операций. С предназначенным управлением Вы получаете тот же высококачественный результат как активное управление. Однако цветное соответствие это происходит в авторское время вместо динамично во время выполнения.
Авторское Содержание для iOS - Методы наиболее успешной практики
Рассмотрите некоторые типичные сценарии: скажем, у Вас есть логотип компании, и Вы хотите, чтобы логотип Вашего приложения для iOS имел то же появление как Ваш логотип компании. Или что, если Вы предназначаетесь для определенного цвета из цветовой схемы для некоторых определенных элементов в Вашем приложении. Как Вы идете об этом?
Вот некоторые общие руководящие принципы для следования, чтобы гарантировать, чтобы цвета вышли, выглядя правильными когда авторское содержание для приложений для iOS.
Установка, Создающая Рабочую станцию/Среду
Когда авторская разработка Вас должна использовать настольный дисплей. Настольные дисплеи лучше, чем дисплеи портативного компьютера для авторской разработки, потому что у них есть очень широкий угол обзора, и они более ярки. Не используйте широкий дисплей палитры. Широкие дисплеи палитры могут иметь чрезвычайно широкий цветовой охват и красивы для взгляда на, но если Вы не очень сложный разработчик относительно управления цветом, просто сделать ошибки. Монитор широкой палитры может цвета отображения, которые являются вне палитры более обычно используемых цветовых пространств, таких как sRGB. Однако Ваши изображения должны фактически содержать те цвета в цветовом пространстве с большей палитрой, чем sRGB. Вы также должны окрасить управляемое программное обеспечение, которое может распознать большее цветовое пространство и перевести его должным образом в цвета на мониторе. Кроме того, Ваш монитор должен должным образом калиброваться и профилироваться для сообщения системы управления цветом, как сделать перевод.
Необходимо также бороться за непротиворечивую среду просмотра. К сожалению, это означает оставлять окна. В дополнение к большой разнице между солнечным светом и темнотой, Ваше восприятие того, что Вы просматриваете, может измениться существенно, даже когда утки солнца позади облака полностью.
Хорошо подсветить Ваши дисплеи (имейте иллюмината света стена позади Вас, и оптимально стена должна быть некоторым нейтральным цветом). По крайней мере это сокращает чрезмерное напряжение зрения.
Калибровка монитора строго не требуется. Для устройств Apple база данных интеграции устройств ColorSync обеспечивает профиль для дисплея. Все еще можно хотеть калибровать, и OS X обеспечивает калибратор программного обеспечения для системы.
Довольный Авторская разработка/Проверка
Обязательно, чтобы Вы использовали управляемые инструменты разработки цвета. Все различные инструменты Apple являются цветом, которым управляют — некоторые сторонние инструменты являются цветом, которым управляют также. Инструменты, которые являются цветом, которым управляют, обычно очень сложны. Вам решать для проверки они должным образом сконфигурированы.
При конфигурировании инструмента необходимо будет установить рабочее цветовое пространство. Рабочее цветовое пространство является независимым от устройств цветовым пространством, использованным для редактирования изображение (такого как цвет и тональные корректировки). Необходимо использовать sRGB в качестве рабочего цветового пространства в инструменте разработки при редактировании носителей для iOS. Ваше исходное содержание может быть в любом цветовом пространстве, пока это должным образом тегируется.
Когда Ваше содержание будет импортировано, преобразуйте его в рабочее цветовое пространство sRGB. Даже если Ваши носители будут в более широкой палитре (например, необработанные фотографии), и Ваш монитор может вывести на экран шире, чем sRGB палитра, то Ваше цветное управляемое приложение переведет те цвета в sRGB, цветовое пространство для готового продукта. При помощи sRGB, работающего цветовое пространство, можно получить точный прогноз того, на что носители будут похожи, когда выведено на экран на фактическом устройстве на iOS. Это - то, как работает мягкая проверка. Мягкая проверка позволяет Вам видеть, как устройство на iOS представит цвета в Ваших носителях путем отображения «моделирования» этого на мониторе. Например, вот то, что происходит когда Вы мягкое доказательство изображение на Вашем мониторе, использующем sRGB рабочее пространство:
- изображение является первым цветом, преобразованным из профиля изображения (профиль, тегированный к изображению) к профилю sRGB.
- как только цвета были преобразованы в профиль sRGB, второе преобразование цветов выполняется, который преобразовывает цвет от профиля sRGB до Вашего профиля монитора.
Путем преобразования в цвет, используемый sRGB рабочей областью и затем преобразования цвета в цвет, используемый монитором, можно моделировать на мониторе, на что изображение будет похоже на фактическом устройстве на iOS.
Наконец, необходимо удостовериться и тегировать экспортируемый файл с sRGB цветовым профилем.
Тегирование содержания
Тегирование означает присоединять метаинформацию к Вашему содержанию, делающему его самоописывающий из цветной перспективы. Для неподвижных изображений, который является профилем ICC. Различные инструменты Apple автоматически тегируют содержание, которое они генерируют. Это не обязательно верно для сторонних инструментов. Это - Ваша ответственность удостовериться, что все Ваше содержание тегируется и выглядит корректным.
OS X содержит следующие инструменты для тегирования Ваших носителей:
Предварительный просмотр
Утилита ColorSync
Automator
Предварительный просмотр
Приложение Предварительного просмотра является цветом, которым управляют, и является большим инструментом для открытия Вашего содержания и проверки, что это выглядит корректным. При переводе в рабочее состояние окна инспектора (пункт меню Tools> Show Inspector), это скажет Вам, если будет присоединенный тег.

Это важно, потому что Вы могли смотреть на немаркированное содержание. Если определенное изображение будет тегировано или не маркировано, очень часто не будет очевидно. Кроме того, немаркированное содержание может выглядеть корректным — даже не цвет, управляемое содержание может выглядеть корректным на определенном дисплее, но это, как почти гарантируют, будет выглядеть по-другому на дисплее другого лица. Управление цветом не только заставляет вещи выглядеть корректными, но и оно делает их непротиворечивыми.
С Предварительным просмотром можно тегировать изображение с цветовым профилем с помощью пункта меню Tools> Assign Profile.

Это позволяет Вам устанавливать цветовое пространство для изображения. Обратите внимание на то, что это не изменяет пиксельные значения в Вашем файле, это изменяет информацию, связанную с ним. Это говорит систему управления цветом, как представить те пиксели.
Утилита ColorSync
Утилита ColorSync является очень мощным приложением. Существует много разных вещей, которые можно сделать с ним, те, которые присваивают профиль данным изображения. Можно также выполнить работу соответствия профиля. Это - работа, фактически изменяющая пиксели. Например, при открытии ProPhoto широкое изображение палитры, можно было соответствовать его к sRGB так, чтобы все пиксельные значения были преобразованы в sRGB и сохранены в файле. Файл будет тогда иметь профиль sRGB связанным с ним.
Можно сравнить профили ICC в трех измерениях. Это становится очень полезным при сравнении палитр. Как рассматриваемый вопрос, если Вы хотите выяснить, если все цвета в изображении в определенном цветовом пространстве могут быть представлены в другом цветовом пространстве, можно сравнить обоих из тех в 3D, и развернуть результат и видеть, торчит ли кто-либо. Те терпящие цвета не могут быть представлены в том цветовом пространстве.


Утилита ColorSync также имеет калькулятор, позволяющий Вам выполнять математические вычисления. Например, можно использовать калькулятор для определения то, что значение в цветовом пространстве ProPhoto находится в sRGB. Это может быть полезно, если Вы создаете значения RGB для рендеринга OpenGL, и Вы хотите соответствовать что-то, что является цветом, которым управляют. Это может также быть полезно для HTML или для сети.

Действие Профиля Automator
Automator является приложением Apple, автоматизирующим повторные процедуры на OS X. С Automator пользователи могут создать произвольно сложные потоки операций из вызванных действий модульных модулей. Действие выполняет дискретную задачу, такую как открытие файла или обрезка изображения. Поток операций является многими действиями в определенной последовательности.
Apple включает комплект готовых действий с Automator. Они включают действие, позволяющее Вам применять выбранный профиль ColorSync к изображению. Например, Вы могли использовать это действие для создания потока операций, присваивающего профиль sRGB всем изображениям в указанной папке.


Инструмент SIPS (система обработки изображений Scriptable)
sips инструмент используется, чтобы запросить или изменить файлы растрового изображения и профили ColorSync ICC. Это также позволяет Вам выполнять пакетную обработку. Это означает, есть ли у Вас целая библиотека тысяч изображений, Вы хотите тегировать Вас, может легко сделать это как пакет с помощью sips инструмент. В этом примере все изображения в каталоге являются цветом, соответствующим к профилю sRGB.
Перечисление 23 Преобразовывает весь jpegs в каталоге к sRGB использование sips инструмент.
sips —matchto “/System/Library/ColorSync/Profiles/sRGB Profile.icc” *.jpg |
Посмотрите sips страница справочника для приобретения знаний о многих разных вещах можно сделать с этим очень способным инструментом.
Оценка результатов
Как Вы оцениваете результаты какого-либо редактирования изображение удостовериться, что цвета корректны? Один очень мощный метод должен использовать то, что вызывают профилем «приема». Вот объяснение:
Содержание со встроенным профилем приема
Это - специальное содержание со встроенным профилем «приема». Профиль «приема» не является регулярным профилем, который Вы ожидали бы видеть в файле образа. Вместо этого это - профиль, особенно сделанный позволить Вам легко говорить, выполняется ли управление цветом ColorSync, когда изображение нарисовано или распечатано. При просмотре этого специального содержания в не цветном управляемом приложении, Вы видите, что это ясно неправильно.

При рассмотрении его в цветном управляемом приложении, таком как Предварительный просмотр, Вы видите, что это корректно.

Можно использовать это содержание в собственных приложениях также. Это - часть примера кода ImageApp. См. также Техническое примечание TN2115: управление цветом изображения для получения дополнительной информации.
Ссылки
Управление цветом изображения TN2115
TN2257 оценивая видео цвет приложения
Управление цветом Видео TN2227 в Основе AV и QTKit
Пример кода ImageApp
Преобразование Изображения с примером кода Компенсации Черной точки
История версии документа
| Дата | Примечания |
|---|---|
| 26.06.2014 | Новый документ, описывающий методы наиболее успешной практики для управления цветом в OS X и iOS |