У меня проблема с тем, как Photoshop обрабатывает полностью прозрачные пиксели при экспорте в формате PNG, а именно, что красный, зеленый и синий цветовые каналы любых полностью прозрачных пикселей сохраняются как 0 вместо цвета, который я определяю в Photoshop ,
Например: у меня есть PSD-файл с маской слоя. Некоторые цветные части изображения делаются полностью прозрачными благодаря маске слоя, но я все же хочу, чтобы оригинальные цветовые каналы были записаны в файл PNG вместо 0.
(Да, сам формат PNG делает содержать данные RGB , даже для полностью прозрачных пикселей. Это проблема с Photoshop, а не PNG) .
Если вам интересно, почему наличие цветных данных имеет значение, когда пиксель полностью прозрачен, то вот несколько вариантов использования:
- PNG дискретизируется с более высоким разрешением, чем оно сохраняется, и выборочные значения интерполируются между соседними пикселями. Это может привести к слабому черному «ореолу» вокруг изображения, если интерполяция не взвешена прозрачностью. (В моем случае это повышение частоты дискретизации выполняется на графическом процессоре, который по соображениям производительности не учитывает прозрачность.)
- Красный, зеленый, синий и альфа-каналы в файле PNG используются не для хранения информации о цвете, а для других целей. (В моем случае я использую все четыре канала для хранения данных, необходимых для вычислений освещения в реальном времени.)
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ
Я попытаюсь объяснить проблему, возникающую при использовании некоторых наглядных пособий. Показывать прозрачные вещи сложно, но, надеюсь, это прояснит мою проблему:
У меня есть PSD-файл с одним слоем и маской слоя. Цветовой слой выглядит так:
Его маска слоя выглядит так:
Если я экспортирую этот файл PSD как PNG, я получу это:
(Белые области действительно прозрачны; они просто выглядят белыми на белом фоне.)
Вы можете спросить: в чем проблема? Это выглядит правильно! Проблема в том, что информация о цвете хранится в этих прозрачных пикселях. Используя инструмент для удаления данных непрозрачности из PNG, не затрагивая RGB, мы можем увидеть информацию о цвете, которую Photoshop сохраняет в прозрачные пиксели:
Как видите, Photoshop заменил информацию о цвете в прозрачных пикселях на черный. Принимая во внимание, что с данными непрозрачности, удаленными из PNG, я хочу, чтобы они выглядели точно так же, как исходный цветовой слой: