【问题标题】:How to resize an image in imagemagick but keep an aspect ratio constant如何在imagemagick中调整图像大小但保持纵横比不变
【发布时间】:2019-11-02 11:57:21
【问题描述】:

我正在尝试调整图像大小(使用 imagemagick)以保持其当前的纵横比,但将其放入 4/3 容器中。

这是我目前的命令:

magick convert ./horse.jpeg -background white -gravity center -extent 4/3 ./hourse_output.jpeg

这就是我想要的:。如您所见,图像被“放入”了一个 4/3 的容器。

【问题讨论】:

标签: imagemagick imagemagick-convert


【解决方案1】:

我的错误。 ImageMagick -extent 中的 4:3 等纵横比只会裁剪而不是填充。

在http://www.fmwconcepts.com/imagemagick/index.html 上查看我的 bash unix 脚本“aspectpad”,它可以满足我的想法。

尽管如此,这里有一个部分解决方案。但这仅适用于横向模式输入。由于对 -extent 使用了内联参数,因此也仅适用于 ImageMagick 7。您必须将其修改为纵向模式。

输入(纵横比 2:1 = 2/1 = 2):

magick barn_2to1.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result.jpg


输出(纵横比 4:3 = 4/3 = 1.33):

请注意,我使用了黑色背景,以便在这里可见。更改为您想要的任何其他颜色。

如果输入横向纵横比大于 4:3 (4/3),它将在顶部/底部填充。如果输入横向纵横比小于 4:3,它将向左/向右填充。

输入(纵横比=1:1 = 1/1 = 1):

magick lena.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result2.jpg


【讨论】:

  • 谢谢!正是我想要的
  • 嗯,在 ImageMagick 6.9.7.4 上,mogrify barn_2to1.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result.jpg 失败:mogrify-im6.q16: invalid argument for option %[wd]x%[ht]':-extent @error/mogrify.c/MogrifyImageCommand/4819。` .
  • mogrify 已经过时了,不太可能支持 -set,尤其是在 IM 6 中。它在 IM 7 中可能工作也可能不工作,但你需要magick mogrify。我建议你使用 IM 7 magick 而不是 magick mogrify
【解决方案2】:

使用 4:3 而不是 4/3。但是您没有指定任何-resize。在 ImageMagick 7 中,仅使用 magick,而不是 magick convert 和不转换。对于其他工具,请使用 magick identify、magick mogrify 等。但不能用于转换。有关 4:3 问题,请参阅 imagemagick.org/script/command-line-processing.php#geometry。

【讨论】:

  • 感谢 4:3 的提示!但是,图像现在被拉伸,而不是简单地“放置”到 4:3 白色容器中。有什么想法吗?
  • 请发布您的确切命令行和输入图像以及您的 ImageMagick 版本和平台。在尝试将图像包含在 4:3 背景中之前,您还没有展示如何调整图像大小。
  • @fmw42 我不确定是否要调整大小,这就是我要问的。就像在 OP 中一样,我想将任何图像放在 4:3 容器中,方法是扩展底部然后居中(如 OP 图像中所示)或扩展右侧并居中。
【解决方案3】:

这是在 ImageMagick 中执行此操作的另一种方法,如果您知道图片处于横向模式并且图像宽高比大于 4/3。只需在顶部和底部留出足够的空间,然后使用 -extent 4:3 进行裁剪。这种方式不需要计算,所以它应该在 ImageMagick 6 或 7 中工作。如果 ImageMagick 6,改变 magick 来转换。 (如果 w/h 小于 4/3 横向,则左右填充。)

输入:

magick barn_2to1.jpg -gravity center -bordercolor black -border 0x100 -background black -extent 4:3 result3.jpg


【讨论】:

    猜你喜欢
    • 2013-06-26
    • 2012-04-15
    • 2012-05-01
    • 2012-11-15
    • 2019-08-15
    相关资源
    最近更新 更多