Descubra el color de fondo transparente PNG en Linux

Descubra el color de fondo transparente PNG en Linux

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)

información relacionada