【问题标题】:How to find pixels per inch (PPI) using ImageMagick如何使用 ImageMagick 查找每英寸像素 (PPI)
【发布时间】:2013-01-15 22:28:23
【问题描述】:

我可以使用以下命令获取 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?

【问题讨论】:

    标签: imagemagick png image-manipulation


    【解决方案1】:

    使用的分辨率和单位存储在文件中,所以如果分辨率存储在 PixelsPerCentimeter 中,identify 将显示它。无法通过identify 自动进行转换。但这只是厘米到英寸的转换数学:

    PixelsPerInch = PixelsPerCentimeter * 2.54
    

    【讨论】:

    • 仅供参考,但您现在实际上可以在identify 中进行转换 - 请参阅我的答案。当然,当您在时间的迷雾中回复时,这可能是不可能的:-)
    • 啊,我什至从来没有考虑过使用fx 表达式来做到这一点。不过,我读过一些关于fx 速度的令人不快的东西。
    • fx 的速度只与-fxconvert 一起使用时有关,因为它为每个像素的每个通道编译和调用该函数,即在一个可能很大的情况下每个像素3 次图片。当您在identify 命令中将它用作one-off 时,它的速度和其他任何东西一样快。
    【解决方案2】:

    1 英寸 =~ 2.54 厘米。所以在两者之间转换是微不足道的。

    【讨论】:

      【解决方案3】:

      您可以简单地添加选项

      -units PixelsPerInch
      

      【讨论】:

      • 这是我要找的:)
      【解决方案4】:

      您可以像这样在identify 的输出中使用fx 运算符和一些智能格式:

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

      当然,这样做的真正乐趣在于它独立于平台,因此您不必在 OS X 和 Linux 上使用 dc,或者在 Windows 上做任何需要的木偶操作来进行数学运算.

      【讨论】:

        猜你喜欢
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多