我正在尝试将图像调整为给定宽度,并按比例调整高度 - 无论图像是横向还是纵向。
我有两个图像我使用和从我读过的内容测试ImageMagick convert -resize
命令,我希望以下内容适用于任何类型的图像:
convert source.jpg -resize 200 out.jpg
问题是,它没有。以下是我的结果:
landscape
,3264 × 2448
,调整为200 × 150
==>的 WORKS portrait
,3240 × 4320
,调整为150 × 200
==>的 FAIL 现在,我知道我可以通过预先读取源图像尺寸并对命令进行调整来解决这个问题(例如使用x200 for portrait似乎将宽度正确设置为200)但我不禁想到那里必须是让ImageMagick处理这个问题的方法。
我阅读了文档并搜索了答案,但似乎无法解决这个问题。非常感谢任何帮助。
修改
我尝试过以下变化但得到的结果不正确:
convert source.jpg -resize 200x out.jpg
FIX :
convert source.jpg -auto-orient -resize 200 out.jpg
答案 0 :(得分:5)
正如JWK答复的评论所述:
图像似乎是风景而不是肖像。某些显示图像的应用程序从图像的exif配置文件中读取额外信息以确定方向。这导致了一些混乱,因为ImageMagick不会自动使用exif配置文件中的信息。这可以通过自动定位选项强制执行。该命令应更改为:
convert source.jpg -auto-orient -resize 200x out.jpg
200x也可写为200,但如果要调整宽度或高度,使用200x或x200会更好。
答案 1 :(得分:0)
我解决了这个问题。原来我的肖像源文件的图像信息不知何故搞砸了。
我运行了identify portrait_source.jpg
命令并注意到它的宽度和高度错误(4320 x 3240
而不是3240 × 4320
)。所以基本上,ImageMagick认为它实际上是一个面向纵向的文件。所有其他程序(OSX Finder,Preview)以纵向显示图像。
只需在预览中打开图像并保存即可修复图像信息,然后调整大小按预期工作。
因此,如果遇到与我类似的问题,请务必检查源图像上的图像信息。我不知道为什么信息首先是错误的。我用的是用数码相机拍的照片。