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)