Identifique o formato PNG específico

0

Como posso saber, de preferência com um comando Imagemagick identify , se um determinado PNG é PNG32, PNG24 ou PNG8?

O %z ou %[depth] fornece a profundidade da amostra (não a profundidade do pixel), que é sempre 8 ou 16, independentemente do formato PNG, e %m ou %[magick] apenas informa PNG .

    
por OrangeDog 06.11.2012 / 13:42

3 respostas

1

Nas versões recentes (6.6.9-2, de 2011-03-30 e posteriores), "identify -verbose" exibe IHDR.bit_depth e IHDR.color_type:

identify -verbose g1.png | grep IHDR

png:IHDR.bit_depth : 1

png:IHDR.color_type : 0 (Grayscale)

ou

identify -verbose png24.png | grep IHDR

png:IHDR.bit_depth : 8

png:IHDR.color_type : 2 (Truecolor)

ou

identify -verbose png64.png | grep IHDR

png:IHDR.bit_depth : 16

png:IHDR.color_type : 6 (RGBA)

    
por 16.12.2015 / 16:30
2

Para completar a resposta de Kyle, parece que você tem que usar algo assim (testado com IM 6.8.4):

#!/bin/sh

type=$(identify -verbose $1 | sed -n "s/^.*png:IHDR.color_type.*(\(.*\))$//p")

case "$type" in
Indexed)
   depth=8
   ;;
Truecolor)
   depth=24
   ;;
RGBA)
   depth=32
   ;;
esac

echo $depth
    
por 26.03.2013 / 10:43
0

Pergunta interessante, -verbose mostra o valor de IHDR.color_type, mais informações aqui .

    
por 14.11.2012 / 00:29