如何使用ImageMagick查找每英寸像素(PPI)

如何使用ImageMagick查找每英寸像素(PPI),imagemagick,png,image-manipulation,Imagemagick,Png,Image Manipulation,我可以使用以下命令获取JPEG图像的PPI: $ identify -format "%w x %h %x x %y" mypic.jpg 1600 x 1200 72 PixelsPerInch x 72 PixelsPerInch 但是,当我在PNG格式上运行相同的命令时,我会得到每厘米像素数: $ identify -format "%w x %h %x x %y" mypic.png 1600 x 1200 28.35 PixelsPerCentimeter x 28.35 Pix

我可以使用以下命令获取JPEG图像的PPI:

$ identify -format "%w x %h %x x %y" mypic.jpg 
1600 x 1200 72 PixelsPerInch x 72 PixelsPerInch
但是,当我在PNG格式上运行相同的命令时,我会得到每厘米像素数:

$ identify -format "%w x %h %x x %y" mypic.png 
1600 x 1200 28.35 PixelsPerCentimeter x 28.35 PixelsPerCentimeter

是否有办法更改命令以获得PNG格式的每英寸像素数(PPI),或者根据每厘米像素数计算PPI?

使用的分辨率和单位存储在文件中,因此如果分辨率存储在像素像素像素计中,则
identify
将以这种方式显示。没有一种方法可以通过
identify
自动进行转换。但这只是厘米到英寸的转换数学:

PixelsPerInch = PixelsPerCentimeter * 2.54

1英寸=~2.54厘米。因此,在两者之间进行转换是很简单的

您只需添加该选项即可

-units PixelsPerInch

您可以在
identify
的输出中使用
fx
操作符和一些智能格式,如下所示:

identify -format "%[fx:int(resolution.x*2.54)]" image.png
299

当然,真正的乐趣在于它是独立于平台的,所以你不必在OS X和Linux上花费大量的钱去做
dc
,或者在Windows上做任何需要的木偶来做数学运算。

仅供参考,但你现在就可以在
identification
中进行转换了-见我的答案。当然,当你在时间的迷雾中回答时,这可能是不可能的:-)啊,我甚至从来没有考虑过使用
fx
表达式来实现这一点。我读过一些。。。关于
fx
的速度有点令人不快。
fx
的速度只适用于将
-fx
convert
一起使用时,因为它为每个像素的每个通道编译和调用函数,即在一个可能较大的图像中,每个像素3次。当您在
identify
命令中将其用作
一次性
时,它与任何东西一样快。这就是我要找的
:)