Descobrir a cor de fundo transparente do PNG no Linux

1

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

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

    
por qubodup 13.05.2015 / 22:51

2 respostas

2

A cor de fundo é transmitida pelo pedaço "bKGD" de PNG.

Na linha de comando, você pode usar "pngcheck -v". Faça o download e instale o pngcheck em

link

digite

pngcheck -v file.png

Se um trecho de bKGD estiver presente no arquivo PNG, a saída de pngcheck incluirá algo assim:

chunk bKGD at offset 0x000a0, length 6 red = 0x00e0, green = 0x00e0, blue = 0x0080

Você provavelmente já possui o ImageMagick (versão 6.6.9 ou posterior), assim você também pode obter informações sobre o bKGD, juntamente com muitas outras coisas, digitando

identify -verbose file.png

e procure

Background color: srgba(224,224,128,1)

png:bKGD: chunk was found (see Background color, above)

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

    
por 14.05.2015 / 15:35
0

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

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

png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color)
    
por 13.05.2015 / 23:04