Parece que los archivos PNG contienen información de color de fondo para píxeles transparentes. Esto a veces se nota cuando se usa esa imagen como textura con configuraciones incorrectas.
¿Cómo saber en Linux (idealmente línea de comando) cuál es el color de los píxeles transparentes en un archivo PNG?
Respuesta1
El color de fondo se transmite a través del fragmento PNG "bKGD".
Desde la línea de comando, puedes usar "pngcheck -v". Descargue e instale pngcheck desde
http://www.libpng.org/pub/png/apps/pngcheck.html
luego escribe
pngcheck -v file.png
Si hay un fragmento bKGD en el archivo PNG, la salida de pngcheck incluirá algo como esto:
fragmento bKGD en el desplazamiento 0x000a0, longitud 6 rojo = 0x00e0, verde = 0x00e0, azul = 0x0080
Probablemente ya tenga ImageMagick (versión 6.6.9 o posterior), por lo que también podría obtener información del fragmento bKGD, junto con muchas otras cosas, escribiendo
identify -verbose file.png
y buscar
Color de fondo: srgba(224,224,128,1)
png:bKGD: se encontró un fragmento (ver Color de fondo, arriba)
Si solo aparece "Color de fondo" pero no "png:bKGD:...", entonces identificar informa el color de fondo predeterminado de ImageMagick y no hay ningún fragmento de bKGD presente en el archivo PNG.
Respuesta2
La especificación PNG (enlace) describe el fragmento tRNS donde se almacena la información de transparencia.
la biblioteca de softwarelibpngPuede leer y escribir archivos PNG, incluida la información de transparencia. Específicamente, busque la siguiente función:
png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color)