Поделиться через


Эффект управления цветом

Используйте эффект управления цветами для преобразования изображения из одного профиля цвета (международный консорциум цветов) на другой. Эффект преобразует изображение в соответствии с спецификацией ICC.

CLSID для этого эффекта CLSID_D2D1ColorManagement.

Свойства эффекта

Отображаемое имя и перечисление индексов Описание
SourceContext
D2D1_COLORMANAGEMENT_PROP_SOURCE_COLOR_CONTEXT
Сведения о исходном цветовом пространстве. Тип — ID2D1ColorContext.
Значение по умолчанию — NULL.
SourceIntent
D2D1_COLORMANAGEMENT_PROP_SOURCE_RENDERING_INTENT
Какое намерение отрисовки ICC использовать. Тип D2D1_COLORMANAGEMENT_RENDERING_INTENT.
Значение по умолчанию — D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
DestinationContext
D2D1_COLORMANAGEMENT_PROP_DESTINATION_COLOR_CONTEXT
Сведения о целевом цветовом пространстве. Тип — ID2D1ColorContext.
Значение по умолчанию — NULL.
DestinationIntent
D2D1_COLORMANAGEMENT_PROP_DESTINATION_RENDERING_INTENT
Какое намерение отрисовки ICC использовать. Тип D2D1_COLORMANAGEMENT_RENDERING_INTENT.
Значение по умолчанию — D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
AlphaMode
D2D1_COLORMANAGEMENT_PROP_ALPHA_MODE
Как интерпретировать альфа-данные, содержащиеся в входном изображении. Тип — D2D1_COLORMANAGEMENT_ALPHA_MODE.
Значение по умолчанию — D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED.
Качество
D2D1_COLORMANAGEMENT_PROP_QUALITY
Уровень качества преобразования. Тип D2D1_COLORMANAGEMENT_QUALITY.
Значение по умолчанию — D2D1_COLORMANAGEMENT_QUALITY_NORMAL.

Режимы намерения отрисовки

Перечисление Описание
D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL Эффект сжимает или расширяет полноцветную гамму изображения, чтобы заполнить цветовую гамму устройства, чтобы создать перцепционные выходные данные, сохраняющие цветовые детали, но могут пожертвовать точностью цветовой метрики. Это полезно для общего воспроизведения содержимого реальной жизни, таких как фотографии.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_RELATIVE_COLORIMETRIC Эффект корректирует любые цвета, которые выходят за пределы гаммы, которые выходное устройство может отрисовывать на ближайший цвет, который можно отрисовать. Он не сохраняет белую точку.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_SATURATION Эффект сохраняет насыщенность чистых цветов в изображении за счет возможного оттенка и легкости. Это полезно для графики, таких как диаграммы и схемы.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC Эффект корректирует любые цвета, которые выходят за пределы гаммы, которые выходное устройство может отрисовывать на ближайший цвет, который можно отрисовать. Эффект не изменяет цвета в гамме и сохраняет белую точку.

Режимы альфа-изображения ввода

Перечисление Описание
D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED Эффект предполагает, что альфа-режим предварительно переопределен.
D2D1_COLORMANAGEMENT_ALPHA_MODE_STRAIGHT Эффект предполагает, что альфа-режим прямо.

D2D1_GAMMA1_G2084 изменения поведения

Если приложение использует пространство D2D1_GAMMA1_G2084 или одно из значений перечисления DXGI_COLOR_SPACE_TYPE, использующих цветовое пространство SMPTE ST.2084 (Perceptual Quantizer), приложение намерено работать с данными HDR.

ID2D1DeviceContext5::CreateColorContextFromSimpleColorProfile и ID2D1DeviceContext5::CreateColorContextFromDromDgiColorSpace API не учитываются; Вместо этого содержимое HDR масштабируется, чтобы оно соответствовало диапазону 0-1 во время операции DeGamma G2084.

На практике содержимое, закодированное в этом гамма-пространстве, использует ссылку WhiteLevel 10 000 Nits, которая, как правило, будет представлена в CCCS как 10 000 / 80 = 125,0. Таким образом, чтобы упростить приложение, это самое простое для этого гамма-преобразования, чтобы также масштабировать светимость на коэффициент 125. Начиная с Windows 10 версии 1809 (10.0; Сборка 17763), поведение эффекта управления цветом заключается в том, что он применяет это масштабирование. Это означает, что вы, как разработчик, не должны применять второй эффект корректировки белого уровня в конвейер.

Соответствие спецификации ICC

Эффект управления цветом соответствует спецификации ICC версии 4.3 с этими ограничениями:

  • Эффект поддерживает цветовые пространства 1, 3 и 4 канала.
  • Эффект не поддерживает colorSpace или именованные профили цветов.

Поведение альфа-канала

Как правило, эффект устанавливает альфа-значение 1 (непрозрачный), если в исходном изображении нет альфа-данных, а альфа-данные удаляются, если в целевом изображении нет места. В таблице описано альфа-поведение.

Исходное пространство цветов, формат пикселей Пространство цветов назначения, формат пикселей Альфа-поведение
1 канал, формат пикселей R
1 канал, формат пикселей R (Нет альфа-данных)
1 канал, формат пикселей RGBA Альфа-данные заданы как 1 (непрозрачные)
3 канала, формат пикселей RGBA Альфа-данные заданы как 1 (непрозрачные)
4 канала, формат пикселей RGBA (Нет альфа-данных)
1 канал, формат пикселей RGBA
1 канал, формат пикселей R Альфа-данные удаляются
1 канал, формат пикселей RGBA Альфа-данные передаются через
3 канала, формат пикселей RGBA Альфа-данные передаются через
4 канала, формат пикселей RGBA Альфа-данные удаляются
3 канала, формат пикселей RGBA
1 канал, формат пикселей R Альфа-данные удаляются
1 канал, формат пикселей RGBA Альфа-данные передаются через
3 канала, формат пикселей RGBA Альфа-данные передаются через
4 канала, формат пикселей RGBA Альфа-данные удаляются
4 канала, формат пикселей RGBA
1 канал, формат пикселей R (Нет альфа-данных)
1 канал, формат пикселей RGBA Альфа-данные заданы как 1 (непрозрачные)
3 канала, формат пикселей RGBA Альфа-данные заданы как 1 (непрозрачные)
4 канала, формат пикселей RGBA (Нет альфа-данных)

Режимы качества

Режим Описание
D2D1_COLORMANAGEMENT_QUALITY_PROOF Самый низкий режим качества. Для этого режима требуется уровень компонентов 9_1 или более поздней версии.
D2D1_COLORMANAGEMENT_QUALITY_NORMAL Обычный режим качества. Для этого режима требуется уровень компонентов 9_1 или более поздней версии.
D2D1_COLORMANAGEMENT_QUALITY_BEST Лучший режим качества. Для этого режима требуется уровень компонентов 10_0 или более поздней версии, а также буферы точности с плавающей запятой. Этот режим поддерживает точность с плавающей запятой, а также расширенный диапазон, как определено в спецификации ICC версии 4.3.

Эффект управления цветом завершается сбоем при рисовании, если приложение запрашивает режим качества, который не поддерживается оборудованием. Уровень компонентов можно определить при вызове D3D11CreateDevice. Вы можете проверить поддержку буфера с плавающей запятой, вызвав ID2D1EffectContext::IsBufferPrecisionSupported со значением D2D1_BUFFER_PRECISION_32BPC_FLOAT.

Пример кода

Пример этого эффекта можно скачать примеркорректировки фотографий Direct2D и ознакомиться с уроком 4 примера.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальный поддерживаемый сервер Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Заголовок d2d1effects.h
Библиотека d2d1.lib, dxguid.lib