Descubra a cor de fundo transparente PNG no Linux

Descubra a cor de fundo transparente PNG no Linux

Parece que os arquivos PNG contêm informações de cor de fundo para pixels transparentes. Às vezes, isso se torna perceptível ao usar essa imagem como textura com configurações erradas.

Como descobrir no Linux (de preferência linha de comando) qual é a cor dos pixels transparentes em um arquivo PNG?

Responder1

A cor de fundo é transmitida através do pedaço PNG "bKGD".

Na linha de comando, você pode usar "pngcheck -v". Baixe e instale o pngcheck em

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

então digite

pngcheck -v file.png

Se um pedaço bKGD estiver presente no arquivo PNG, a saída do pngcheck incluirá algo assim:

pedaço bKGD no deslocamento 0x000a0, comprimento 6 vermelho = 0x00e0, verde = 0x00e0, azul = 0x0080

Você provavelmente já possui o ImageMagick (versão 6.6.9 ou posterior), então também pode obter informações do bloco bKGD, junto com muitas outras coisas, digitando

identify -verbose file.png

e procure

Cor de fundo: srgba(224.224.128,1)

png:bKGD: pedaço foi encontrado (veja cor de fundo, acima)

Se apenas "Cor de fundo" aparecer, mas não "png:bKGD:...", então a identificação está relatando a cor de fundo padrão do ImageMagick e nenhum pedaço bKGD está presente no arquivo PNG.

Responder2

A especificação PNG (link) descreve o pedaço tRNS onde as informações de transparência são armazenadas.

A biblioteca de softwarelibpngpode ler e gravar arquivos PNG, incluindo as informações de transparência. Especificamente, procure a seguinte função:

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

informação relacionada