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

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

3 ответа3

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
1

В последних версиях (6.6.9-2, 2011-03-30 и более поздних версиях) команда «Identify -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)

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .