ฉันจะบอกได้อย่างไรว่าควรใช้identify
คำสั่งImagemagick โดยเฉพาะว่า PNG เฉพาะคือ PNG32, PNG24 หรือ PNG8
%z
หรือ%[depth]
ให้ลึกตัวอย่าง (ไม่ลึกพิกเซล) ซึ่งมักจะเป็น 8 หรือ 16 โดยไม่คำนึงถึงรูปแบบ PNG และ%m
หรือรายงานแค่%[magick]
PNG
ฉันจะบอกได้อย่างไรว่าควรใช้identify
คำสั่งImagemagick โดยเฉพาะว่า PNG เฉพาะคือ PNG32, PNG24 หรือ PNG8
%z
หรือ%[depth]
ให้ลึกตัวอย่าง (ไม่ลึกพิกเซล) ซึ่งมักจะเป็น 8 หรือ 16 โดยไม่คำนึงถึงรูปแบบ PNG และ%m
หรือรายงานแค่%[magick]
PNG
คำตอบ:
ในเวอร์ชันล่าสุด (6.6.9-2, ของ 2011-03-30 และใหม่กว่า), เอาต์พุต "ident -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)
เพื่อให้คำตอบของ Kyle สมบูรณ์คุณต้องใช้สิ่งนี้ (ทดสอบด้วย 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