【问题标题】:Can ImageMagick return the image size?ImageMagick 可以返回图像大小吗?
【发布时间】:2010-12-06 01:05:04
【问题描述】:

我正在使用命令行中的 ImageMagick 来调整图像大小:

convert -size 320x240 image.jpg

但是,我不知道如何确定最终图像的大小。由于这是比例图像比例,因此新图像的尺寸很可能是 100x240 或 320x90(不是 320x240)。

我可以调用“转换”命令来调整图像大小并返回新的图像尺寸吗?例如伪代码:

convert -size 320x240 -return_new_image_dimension image.jpg   // returns the new resized image dimensions

【问题讨论】:

    标签: image unix image-processing command-line imagemagick


    【解决方案1】:

    您可以额外拨打identify:

    转换-size 320x240 image.jpg;识别 -format "%[fx:w]x%[fx:h]" image.jpg

    【讨论】:

    • 很好奇,为什么identify -format "%[fx:w]x%[fx:h]"identify -format "%[w]x%[h]" 更可取?
    • 我认为不是,@mark。我无法想象早在 2009 年 %w%h 还不支持。但是如果fx: 有一些副作用,那么我想我也会提到这一点。诡异的。我会做一些测试...
    【解决方案2】:

    -ping 选项

    也建议使用此选项,因为它可以防止将整个图像加载到内存中,如:https://stackoverflow.com/a/22393926/895245:

    identify -ping -format '%w %h' image.jpg
    

    man identify 说:

    -ping                efficiently determine image attributes
    

    例如,我们可以用Wikimedia's "Large image" category 上的一些巨大图像来测试它,例如这个ultra high resolution image of Van Gogh's Starry Night 维基媒体声称是 29,696 × 29,696 像素,文件大小:175.67 MB:

    wget -O image.jpg https://upload.wikimedia.org/wikipedia/commons/e/e8/Van_Gogh_-_Starry_Night_-_Google_Art_Project-x0-y0.jpg
    time identify -ping -format '%w %h' image.jpg
    time identify       -format '%w %h' image.jpg
    

    然而我观察到-ping 至少在这种情况下并没有在时间上产生任何影响,也许它只对其他图像格式有影响?

    在 ImageMagick 6.9.10、Ubuntu 20.04 上测试。

    另请参阅:Fast way to get image dimensions (not filesize)

    【讨论】:

      【解决方案3】:

      我不确定%w%h 格式。虽然 Photoshop 说我的图片是 2678x3318(我真的相信 Photoshop),但identify 给了我:

      identify -ping -format '=> %w %h' image.jpg
      => 643x796
      

      ([fx:w] 和 [fx:h] 也是如此)

      我不得不使用

      identify -ping -format '=> %[width] %[height]' image.jpg
      => 2678x3318
      

      我不知道这里发生了什么,但是您可以在标准输出上看到这两个值(其中宽度和高度 之前 => 是正确的)

      identify -ping image.jpg
      image.jpg PAM 2678x3318=>643x796 643x796+0+0 16-bit ColorSeparation CMYK 2.047MB 0.000u 0:00.000
      

      The documentation 表示 %w 是 当前 宽度, %[width] 是 原始 宽度。令人困惑。

      %w%h 可能适用于大多数用途,但并非适用于所有图片。

      【讨论】:

        【解决方案4】:

        如果您指定选项-verbose,则转换打印:

        original.jpg=>scaled.jpg JPEG 800x600=>100x75 100x75+0+0 8-bit sRGB 4.12KB 0.020u 0:00.009
                                               ^^^^^^
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-06
          • 2014-08-26
          • 1970-01-01
          • 2011-10-18
          • 1970-01-01
          • 2013-09-14
          • 2017-09-10
          相关资源
          最近更新 更多