Identifique o formato PNG específico

0

Como posso saber, idealmente, com um Imagemagick identify comando, se um determinado PNG é PNG32, PNG24 ou PNG8?

o %z ou %[depth] dá a profundidade da amostra (não a profundidade do pixel), que é sempre 8 ou 16, independentemente do formato PNG, e %m ou %[magick] apenas relatórios PNG.

OrangeDog
fonte

Respostas:

1

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

identifique -verbose g1.png | grep IHDR

png: IHDR.bit_depth: 1

png: IHDR.color_type: 0 (escala de cinza)

ou

identifique -verbose png24.png | grep IHDR

png: IHDR.bit_depth: 8

png: IHDR.color_type: 2 (Truecolor)

ou

identifique -verbose png64.png | grep IHDR

png: IHDR.bit_depth: 16

png: IHDR.color_type: 6 (RGBA)

Glenn Randers-Pehrson
fonte
Em qual versão foi introduzida?
OrangeDog
@OrangeDog Adicionei o recurso à versão IM 6.6.9-2, 2011-03-30
Glenn Randers-Pehrson
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.*(\(.*\))$/\1/p")

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

echo $depth
sschuberth
fonte
0

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

Screenack
fonte