Xcode 9 рендерит активы P3 PDF в SRGB - PullRequest
0 голосов
/ 01 июля 2018

Я часами пытался выяснить это.

Цель

Отображение P3 PDF-актива в UIImageView (PDF на 100% в цветовом пространстве P3).

Выпуск

Я создаю ресурс PDF P3 и добавляю в Xcode. В каталоге активов актив отображается в правильном цвете P3. При использовании актива внутри UIImageView и работе на iPhone X (физическое устройство, поддерживающее цветовое пространство P3), показ актива - SRGB вместо P3.


У кого-нибудь есть информация о том, как решить эту проблему?
Любая помощь будет высоко оценена.
Roi

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Используйте PNG напрямую

Вы упоминаете, что подозреваете, что в PDF есть PNG. Я бы порекомендовал использовать PNG напрямую без PDF.

PDF-файлы отображаются Apple в PNG при их развертывании на устройстве. Этот рендеринг может применять определенный цветовой профиль (PDF и управление цветом - это широкая тема).

Также сам рендеринг может не дать ожидаемых результатов, см., Например. https://bjango.com/articles/idontusepdfs/

16 бит на пиксель (на канал)

В Руководстве Apple по человеческому интерфейсу указано, что необходимо использовать 16 бит на пиксель и экспортировать изображения в формате .png.

При необходимости используйте цветовой профиль Display P3 со скоростью 16 бит на пиксель (на канал) и экспортируйте изображения в формате .png.

см. Здесь: https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/#color-management

Наконец, я хотел бы упомянуть еще две настройки, которые вы, вероятно, уже используете:

Сжатие

В инспекторе атрибутов для графических ресурсов вы должны выбрать «Без потерь».

Gamut

Перейдите к «sRGB и Display P3», а затем убедитесь, что ваше изображение находится в слоте «Display P3» в файле .xcasset.

Тест с PNG-экспортом эскиза

Взглянув на диаграмму цветности, можно увидеть, что цветовое пространство P3 имеет большую гамму для зеленоватых цветов.

Поскольку я не уверен, смогу ли я распознать разницу между двумя цветовыми пространствами, я провел следующий эксперимент:

  • вставил артборд в Sketch
  • создал зеленый прямоугольник с цветом # 00FF00
  • назначен в разделе <Файл / Изменить цветовой профиль> Дисплей P3 Цветовой профиль
  • выделил прямоугольник и нажал Экспортировал выбранное
  • выбрали .png без чередования

Тогда я сделал то же самое, но с профилем sRGB ICE61966-2.1.

Я проверил оба .png в утилите ColorSync (можно найти в / Applications / Utilities). При нажатии на кнопку панели инструментов информации об изображении можно увидеть, что назначены правильные профили ColorSync.

В Affinity Photo я проверил в количество бит на канал. Это было для обоих .pngs 8 бит на канал, поэтому я создал два дополнительных .png с 16 битами на канал и назвал его соответствующим образом.

Затем я добавил 4 .pngs в папку .xcassets со следующими настройками:

  • Сжатие: «без потерь»
  • Шкала: «Одна шкала»
  • Гамма: 'sRGB и дисплей P3'
  • назначил .pngs соответственно правильному слоту (sRGP или Display P3).

Затем я развернул на iPhone X.

Результат: На самом деле я вижу разницу между зелеными прямоугольниками. «Дисплей P3» действительно имеет более насыщенный зеленый цвет.

Я экспортировал то же самое на старый iPhone, где я не вижу различий между изображениями sRGB и Display P3.

Мне показалось интересным, что 8-битный вариант непосредственно из Sketch также работает, поэтому 16 бит на канал не кажутся жестким требованием.

0 голосов
/ 17 июля 2018

Вы выбрали настройку гаммы для своего актива?

info

Как вы убедились, что изображение в SRGB на iPhone X?
Может быть, разговор WWDC16 стоит еще раз проверить: разговорные слайды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...