Определите конкретный формат PNG

0

Как я могу сказать, в идеале с Imagemagick identify команда, является ли конкретный PNG PNG32, PNG24 или PNG8?

%z или же %[depth] дает глубину выборки (не глубину пикселя), которая всегда составляет 8 или 16 независимо от формата PNG, %m или же %[magick] просто отчеты PNG,

OrangeDog
источник

Ответы:

1

В последних версиях (6.6.9-2, 2011-03-30 и более поздних версиях) "identifive -verbose" выводит IHDR.bit_depth и IHDR.color_type:

определить -verbose g1.png | grep IHDR

png: IHDR.bit_depth: 1

png: IHDR.color_type: 0 (оттенки серого)

или же

определить -verbose png24.png | grep IHDR

png: IHDR.bit_depth: 8

png: IHDR.color_type: 2 (Truecolor)

или же

определить -verbose png64.png | grep IHDR

png: IHDR.bit_depth: 16

png: IHDR.color_type: 6 (RGBA)

Glenn Randers-Pehrson
источник
В какой версии это было представлено?
OrangeDog
@OrangeDog Я добавил эту функцию в IM версии 6.6.9-2, 2011-03-30
Glenn Randers-Pehrson
2

Чтобы завершить ответ Кайла, кажется, вы должны использовать что-то вроде этого (протестировано с 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
источник
0

Интересный вопрос, -verbose выводит значение IHDR.color_type, больше информации Вот ,

Screenack
источник