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.

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)


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

0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.