1

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

Как узнать в Linux (в идеале командную строку), каков цвет прозрачных пикселей в файле PNG?

2 ответа2

2

Цвет фона передается через фрагмент PNG "bKGD".

Из командной строки вы можете использовать «pngcheck -v». Загрузите и установите pngcheck с

http://www.libpng.org/pub/png/apps/pngcheck.html

затем введите

pngcheck -v file.png

Если в файле PNG присутствует фрагмент bKGD, вывод pngcheck будет содержать что-то вроде этого:

кусок bKGD со смещением 0x000a0, длина 6 красный = 0x00e0, зеленый = 0x00e0, синий = 0x0080

Вероятно, у вас уже есть ImageMagick (версия 6.6.9 или новее), поэтому вы также можете получить информацию о чанке bKGD, а также множество других вещей, набрав

identify -verbose file.png

и искать

Цвет фона: srgba(224,224,128,1)

png: bKGD: кусок был найден (см. Цвет фона выше)

Если отображается только "Цвет фона", но не «png:bKGD:...», то параметр identifier сообщает о цвете фона по умолчанию для ImageMagick, и в файле PNG отсутствует фрагмент bKGD.

0

Спецификация PNG (ссылка) описывает блок tRNS, где хранится информация о прозрачности.

Библиотека программного обеспечения libpng может читать и записывать файлы PNG, включая информацию о прозрачности. В частности, найдите следующую функцию:

png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color)

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