【问题标题】:ImageMagick resize - set width for both landscape and portrait imagesImageMagick 调整大小 - 为横向和纵向图像设置宽度
【发布时间】:2014-10-22 19:52:31
【问题描述】:

我正在尝试将图像调整为给定宽度,并按比例调整高度 - 无论图像是横向还是纵向。

我有两张图片,我用我所阅读的内容测试 ImageMagick convert -resize 命令,我希望以下内容适用于任何类型的图片:

convert source.jpg -resize 200 out.jpg

问题是,它没有。这是我的结果:

  • 源图像 1:landscape3264 × 2448,调整为 200 × 150 ==> WORKS
  • 源图像 2:portrait3240 × 4320,调整为 150 × 200 ==> 失败

现在,我知道我可以通过预先读取源图像尺寸并对命令进行调整来解决此问题(例如,使用 x200 进行纵向似乎将宽度正确设置为 200)但我不禁想到那里必须是让 ImageMagick 处理此问题的方法。

我阅读了文档并搜索了答案,但似乎无法解决这个问题。非常感谢任何帮助。

编辑:

我尝试了以下变体,但得到相同的错误结果:

convert source.jpg -resize 200x out.jpg

修复

convert source.jpg -auto-orient -resize 200 out.jpg

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

    正如 JWK 在答案的 cmets 中所讨论的那样:

    图像似乎是横向而不是纵向。一些显示图像的应用程序会从图像的 exif 配置文件中读取额外信息以确定方向。这引起了一些混乱,因为 ImageMagick 不会自动使用 exif 配置文件中的信息。这可以通过 auto-orient 选项强制执行。命令应该改成这样:

    convert source.jpg -auto-orient -resize 200x out.jpg
    

    200x 也可以写成 200,但如果调整宽度或高度,使用 200x 或 x200 会更好。

    【讨论】:

    • 感谢“-auto-orient”选项,这让我很开心!! :)
    【解决方案2】:

    我解决了这个问题。原来我的肖像源文件的图像信息不知何故搞砸了。

    我运行identify portrait_source.jpg 命令并注意到它的宽度和高度错误( 4320 x 3240 而不是3240 × 4320)。所以基本上,ImageMagick 认为它正在查看面向横向的文件,而实际上它是面向纵向的文件。所有其他程序(OSX Finder、预览)都以纵向显示图像。

    只需在预览中打开图像并保存即可修复图像信息,然后调整大小按预期工作。

    因此,如果您遇到与我类似的问题,请务必检查源图像上的图像信息。我不知道为什么信息首先是错误的。我用的是用数码相机拍的照片。

    【讨论】:

    • 您是否尝试在加载图像后添加 -auto-orient 选项?这可能是其他程序正在做的事情。
    • 你是对的,在-resize 选项之前添加-auto-orient 会产生正确的结果:convert source.jpg -auto-orient -resize 200 out.jpg 如果要添加一个总结问题的答案并描述-auto-orient 的用法修复它,我会接受它作为正确答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 2012-02-24
    • 2015-05-22
    • 2023-01-30
    • 2019-10-11
    相关资源
    最近更新 更多