识别特定的 PNG 格式

识别特定的 PNG 格式

最好使用 Imagemagickidentify命令来判断某个 PNG 是 PNG32、PNG24 还是 PNG8?

或给出样本深度(而不是像素深度),无论 PNG 格式如何,它始终为 8 或 16,而%z或仅报告。%[depth]%m%[magick]PNG

答案1

在较新的版本(2011-03-30 的 6.6.9-2 及更高版本)中,“identify -verbose”输出 IHDR.bit_depth 和 IHDR.color_type:

识别 -verbose g1.png | grep IHDR

png:IHDR.位深度: 1

png:IHDR.color_type : 0(灰度)

或者

识别 -verbose png24.png |查找 IHDR

png:IHDR.位深度:8

png:IHDR.color_type : 2(真彩色)

或者

识别 -verbose png64.png | grep IHDR

png:IHDR.位深度:16

png:IHDR.颜色类型:6(RGBA)

答案2

为了完成 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

答案3

有趣的问题,-verbose 输出 IHDR.color_type 值,更多信息这里

相关内容