Как я могу сказать Photoshop сохранить цвет RGB полностью прозрачных пикселей при экспорте в формат PNG?

12

У меня проблема с тем, как Photoshop обрабатывает полностью прозрачные пиксели при экспорте в формате PNG, а именно, что красный, зеленый и синий цветовые каналы любых полностью прозрачных пикселей сохраняются как 0 вместо цвета, который я определяю в Photoshop ,

Например: у меня есть PSD-файл с маской слоя. Некоторые цветные части изображения делаются полностью прозрачными благодаря маске слоя, но я все же хочу, чтобы оригинальные цветовые каналы были записаны в файл PNG вместо 0.

(Да, сам формат PNG делает содержать данные RGB , даже для полностью прозрачных пикселей. Это проблема с Photoshop, а не PNG) .

Если вам интересно, почему наличие цветных данных имеет значение, когда пиксель полностью прозрачен, то вот несколько вариантов использования:

  • PNG дискретизируется с более высоким разрешением, чем оно сохраняется, и выборочные значения интерполируются между соседними пикселями. Это может привести к слабому черному «ореолу» вокруг изображения, если интерполяция не взвешена прозрачностью. (В моем случае это повышение частоты дискретизации выполняется на графическом процессоре, который по соображениям производительности не учитывает прозрачность.)
  • Красный, зеленый, синий и альфа-каналы в файле PNG используются не для хранения информации о цвете, а для других целей. (В моем случае я использую все четыре канала для хранения данных, необходимых для вычислений освещения в реальном времени.)

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ

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

У меня есть PSD-файл с одним слоем и маской слоя. Цветовой слой выглядит так:

введите описание изображения здесь

Его маска слоя выглядит так:

введите описание изображения здесь

Если я экспортирую этот файл PSD как PNG, я получу это:

введите описание изображения здесь

(Белые области действительно прозрачны; они просто выглядят белыми на белом фоне.)

Вы можете спросить: в чем проблема? Это выглядит правильно! Проблема в том, что информация о цвете хранится в этих прозрачных пикселях. Используя инструмент для удаления данных непрозрачности из PNG, не затрагивая RGB, мы можем увидеть информацию о цвете, которую Photoshop сохраняет в прозрачные пиксели:

введите описание изображения здесь

Как видите, Photoshop заменил информацию о цвете в прозрачных пикселях на черный. Принимая во внимание, что с данными непрозрачности, удаленными из PNG, я хочу, чтобы они выглядели точно так же, как исходный цветовой слой:

введите описание изображения здесь

Уолт Д
источник
Показ того, что вы испытываете, может быть более полезным. Главным образом потому, что не должно быть никакой информации о цвете в прозрачной части PNG. Как вы сохраняете PNG? Используете ли вы «Сохранить для Интернета» и проверена ли «прозрачность»? Я знаю, это звучит просто, но не уверен, как вы получаете свои результаты.
ErickP
Да, я не публиковал примеры изображений, потому что вы на самом деле не видите проблему (без загрузки PNG в программе рисования и отключения прозрачности), поскольку проблема только с полностью прозрачными пикселями. Я посмотрю, смогу ли я придумать способ визуализировать то, о чем я говорю.
Уолт Д
Но когда вы говорите «не должно быть никакой информации о цвете в прозрачной части PNG», я на самом деле хочу, чтобы в прозрачной части PNG была информация о цвете. Я знаю, это звучит странно, но есть определенные приложения, такие как два, которые я упомянул выше. (И да, PNG полностью поддерживает информацию о цвете в прозрачных областях; я все время использую ее в процедурно-сгенерированных PNG. Проблема в том, как Photoshop сохраняет прозрачные области в PNG.)
Уолт Д.
1
@ DA01 Я не думаю, что это ошибка, так как это оптимизация, которую делает Photoshop (PNG с одинаковыми цветами занимают меньше места на диске), что нарушает мой конкретный вариант использования.
Уолт Д
1
@ErickP Спасибо за попытку помочь, я действительно ценю это. :) К счастью, в настоящее время графические процессоры довольно стандартны, и этот вид масштабирования (известный как билинейная интерполяция) работает одинаково для всех из них, поэтому любое решение, которое я в итоге найду, должно работать универсально.
Уолт Д

Ответы:

10

Я нашел решение! SuperPNG плагин будет сохранять значения RGB для прозрачных пикселей , как долго , как вы оставите «Чистый прозрачный» флажок.

Уолт Д
источник
Мне интересно, есть ли Photoshop CC, эквивалентный SuperPNG?
Марсель Уилсон