Почему цвета определенных файлов PNG искажаются при открытии в Illustrator?

11

Я пытался открыть скриншот iPhone в Illustrator, но по некоторым причинам цвета искажены. Если я открываю тот же файл в любом другом приложении (Photoshop, GIMP, Preview и т. Д.), Цвета отображаются нормально. Любопытно, что это происходит только с определенными скриншотами, так как я протестировал и скриншот домашнего экрана, который Illustrator открывал без искажения цветов.

Тем не менее, с GIMP, всплывающее диалоговое окно с заявлением

Изображение IMG_1199.PNG имеет встроенный цветовой профиль:

Дисплей P3

Преобразовать изображение в рабочее пространство RGB (встроенный sRGB)?

С возможностью сохранить или преобразовать цветовой профиль; это заставляет меня думать, что Illustrator может не распознавать вышеупомянутый цветовой профиль.

Вот исходное изображение прямо с телефона [слева] и изображение, открытое (затем сохраненное) из Illustrator [справа]:

Скриншот клавиатуры iPhone Снимок экрана клавиатуры iPhone искажен


Обновить

Преобразование цветового профиля в GIMP, сохранение, а затем повторное открытие файла в Illustrator устраняет проблему. Это, кажется, подтверждает мое подозрение, что цветовой профиль Display P3 является проблемой, которая несколько меняет мой вопрос: как я могу открыть изображение в Illustrator без предварительной конвертации изображения заранее?

Похоже, что это может быть ошибка в Illustrator, поэтому я отправил отчет об ошибке в Adobe. Я буду обновлять, если отчет является окончательным, или если Adobe предоставляет решение.

Bryan
источник
1
Psychedelic! Я знаю людей, которые едят таблетки, чтобы увидеть это. Привет, Брайан, добро пожаловать в GDSE и спасибо за твой вопрос. Если у вас есть какие-либо вопросы по поводу этого SE, загляните в справочный центр или присоединяйтесь к нам в чате графического дизайна ! Продолжайте вносить свой вклад и наслаждайтесь своим временем здесь.
Винсент
У меня было множество проблем со скриншотами iPhone, но у меня никогда не было ничего подобного. Впечатляет.
Цай
Означает ли Р3 цвет профиля 10bpp цвет (он же 30bit)? Это ошибка, или AI просто не в состоянии обработать 10bpp (ARGB 02 10 10 10)? Запрашивающий разум хочет знать. (редактирование: чтобы быть ясно, я действительно хочу знать, как я понятия не имею , )
Йорик
Странно: и GraphicsMagick's, identifyи Linux ' fileидентифицируют опубликованный скриншот слева как jpg, несмотря на суффикс .png. Это оригинальный / неизмененный скриншот? Вы переименовали суффикс в .png? Может в этом проблема. Попробуйте изменить суффикс на jpg и открыть его снова.
Socowi
@Socowi Да, это странно, я проверил это сам , используя fileкоманду на MacOS. Он приходит , как JPEG image dataи, несмотря на то, информационное окно по- прежнему отображает его в виде файла PNG. Должно быть, Имгур что-то делает, чтобы масштабировать фотографии. Если вы загрузите изображение из ссылки полноразмернойfile команда должна признать это правильно , так как файл PNG.
Bryan

Ответы:

9

Что, вероятно, происходит: скриншот является 16-битным PNG, но иллюстратор читает это как 8-битный формат PNG, используя только 8 младших бит (!).

объяснение

Для следующего объяснения мы предполагаем, что снимок экрана представляет собой 16-битное изображение в градациях серого, то есть каждый пиксель представляет собой число между

черный = 0 = 0x0000 = 0b 0000 0000 0000 0000

и

(16 бит) белый = 2 ^ 16-1 = 65535 = 0xFFFF = 0b 1111 1111 1111 1111.

(0x обозначает шестнадцатеричные числа и 0b обозначает двоичные числа)

Illustrator, похоже, загружает только 8 из этих 16 битов, к сожалению, неправильных, то есть наименее значимых. Выбор младших разрядов - единственная проблема.

0b #### #### #### ####
   \_______/ \_______/
   discarded   loaded

После импорта иллюстратор масштабирует интерпретацию (какое число белое, а черное) в соответствии с новым максимальным числом:

(8 бит) белый = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111.

Предположим, что один из наших пикселей имеет значение 0b 1111 1111 0000 00001 = 0xFF01 = 65281, то есть почти белое. После импорта значение будет 0b 0000 0001 = 0x01 = 1, то есть почти черным.

Это как «округление» 999,1 до 1 - совершенно неправильно!

моделирование

Как мы можем быть уверены, что описанная проблема является нашей проблемой? Мы моделируем ошибку!

Следующая программа на Python загружает 16-битный скриншот, как описано выше.
(Пожалуйста, не судите меня, это моя самая первая программа на Python.)

#! /usr/bin/python
import numpy as np
import cv2

# load picture
img = cv2.imread('screen.png', 3)

# assert (by hand) that picture is loaded as 16 bit image
print img.dtype

# simulate the bug
img[:,:] &= 0x00FF # use only 8 least significant bits
img[:,:] <<= 8     # rescale

# save the picture
cv2.imwrite('bug.png',img)

Симулированная ошибка
результат bug.png
Нажмите здесь для получения оригинального размера, а здесь для сравнения с версией OP.

Как мы видим, наша симуляция дает точно такой же результат.

Временное решение

Я могу думать только об одном обходном пути (так как я не использую иллюстратор):

Конвертируйте ваши скриншоты в 8-битные pngs

GraphicsMagick и / или ImageMagick - это консольные инструменты, которые удобны для этой работы. Следующая команда преобразует в 8-битные pngs:

convert original.png -depth 8 converted.png
Socowi
источник
Вау, спасибо за подробное объяснение. Adobe еще не ответила на мое сообщение об ошибке, но, если повезет, они добавят в Illustrator надлежащую поддержку 16-битного цвета. Или, по крайней мере, правильно округлить их до 8-битного цвета.
Брайан
1

Теперь это какой-то интересный вопрос.

GIMP уже дают нам некоторую подсказку, подтверждая подозрение, что это что-то с цветовым профилем скриншота. Преобразование его в ваши ежедневные sRGB и 8 бит на канал может привести к тому, что Illustrator не допустит путаницы при попытке использовать его как CMYK.

Лукас Флики
источник
1

Это ОСОБО поздно, но простой способ (для пользователей Mac) - открыть PNG в Preview, затем экспортировать его как PNG, переключив стандартную 16-битную опцию на 8-битную. Это не требует никакого дополнительного программного обеспечения, и занимает всего несколько секунд.

глина
источник