Узнайте прозрачный цвет фона PNG на Linux

Узнайте прозрачный цвет фона PNG на Linux

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

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

решение1

Цвет фона передается с помощью фрагмента 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:...», то identify сообщает о цвете фона ImageMagick по умолчанию, а в файле PNG отсутствует фрагмент bKGD.

решение2

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

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

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

Связанный контент