48

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

После установки изображения в качестве моего фона появляется второе изображение, показывающее, что на самом деле чайка стоит на оружии: Фоновое изображение с секретным слоем?

Это поначалу меня очень заинтересовало характером изображения и способами его создания. Я открыл изображение в Фотошопе, и ничего необычного не появляется - изображение остается таким же, как прозрачная чайка, нет скрытых слоев или масок, чтобы сделать его невидимым. После проверки изображения в Photoshop я подумал, что Windows внесла изменения в файл, установив его в качестве фона рабочего стола - после перехода к %AppData%\Microsoft\Windows\Themes изображение оказалось таким же.

Почему это изображение показывает отдельный скрытый слой или совершенно отдельное изображение, если оно установлено в качестве фона рабочего стола Windows по сравнению с просмотром или редактированием в Photoshop?

Прямая ссылка на изображение.

3 ответа3

59

Я предполагаю, что это было названо "Грязная прозрачность" в этой статье от Smashing Magazine.

По сути, любой цвет в прозрачных PNG может быть описан значением RGBA, где RGB обозначает красный, зеленый и синий каналы, а A обозначает альфа. "Невидимые" цвета могут иметь любые значения RGB + 0 Альфа, что означает, что цвет сохранит исходную информацию, но будет отображаться как прозрачный, поскольку его альфа установлен на 0.

Почему вы хотите хранить значения RGB при использовании Alpha? Таким образом, вы можете получить плавные края и прозрачные цвета - в отличие от зубчатых краев в GIF-изображениях с прозрачным фоном. Прозрачность в PNG может быть от 0 до 255, в GIF-файле она либо на 100% прозрачна, либо непрозрачна. Чтобы отобразить что-то, скажем, с 50% прозрачностью, вам все равно нужно знать значения RGB, следовательно, значение сохраняется. Большинство программ для редактирования изображений отбрасывают эту информацию RGB при сохранении полностью прозрачного цвета, включая Photoshop.

Я не могу говорить о версиях CC, но чтобы увидеть "невидимые" цвета в старых версиях Photoshop, вам понадобится плагин. Выберите один: фото бесплатно или SuperPNG. SuperPNG кажется более новым и менее загруженным.

Почему трюк работает? Обои должны быть непрозрачными, потому что за ними ничего не видно, верно? Я предполагаю, что Windows отбрасывает информацию об альфа-канале, выявляя скрытые значения RGB в процессе.

13

Чтобы добавить ответ Нихала, это можно воспроизвести с помощью кисти «против стирания» в GIMP. Кисть «Удалить» может добавить или удалить альфа-канал, если изображение использует формат, который его поддерживает (удерживайте клавишу «Alt» для переключения между стиранием и стиранием).

Для Krita вы можете сделать это: Layer > Split Alpha > Alpha into Mask . После этого вы можете скрыть или удалить канал прозрачной маски 1, который был только что создан, и вы увидите полное изображение.

Поскольку фон Windows не может иметь ничего позади, он, вероятно, просто лишает прозрачности и отображает изображение без него (быстрое и грязное 32-битное изображение до 24-битного по внешнему виду).

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .