【问题标题】:ImageMagick convert resize by the smaller dimension?ImageMagick 通过较小的尺寸转换调整大小?
【发布时间】:2015-03-25 03:08:38
【问题描述】:

以下命令将较大的尺寸调整为 256:

convert -resize 256x256 in.jpg out.jpg

例如,如果in.jpg 是 1024x512,它会将其大小调整为 256x128。

是否可以使用 ImageMagick convert 将较小尺寸调整为 256(同时保持纵横比)? (我需要 512x256)

如果没有,还有其他简单的命令行解决方案吗?

【问题讨论】:

  • 嗯?该命令已将大小调整为 256 并保持纵横比。你能举一个你想要的例子吗?
  • @MarkSetchell 我刚刚添加了一个示例
  • 你的意思是convert in.jpg -resize x256 out.jpg

标签: imagemagick


【解决方案1】:

fill area flag ^ 似乎完全符合您的要求:

convert -resize 256x256^ in.jpg out.jpg

如果您使用的是 Windows:

填充区域标志('^' 标志)是 Window 批处理脚本中的一个特殊字符,您需要通过加倍来转义该字符。比如'^^',不然就不行了。

这仅适用于 ImageMagick 6.3.8-3 及更高版本。对于旧版本,请使用this trick

【讨论】:

    【解决方案2】:

    也许我在评论中建议的命令会起作用,即

    convert in.jpg -resize x256 out.jpg
    

    或者,如果您确实想识别较小的尺寸并明确调整其大小,这应该可以解决问题

    #!/bin/bash
    image=$1
    cmd="x256"
    [ $(identify -format "%[fx:w<h?1:0]" "$image") -eq 1 ] && cmd="256x"
    convert "$image" -resize $cmd out.jpg
    

    我在第 3 行预设了按高度调整大小的命令。然后如果图像高于宽度,我让 ImageMagick 输出1,如果是,我将调整大小命令更改为按宽度调整大小。然后,最后,我进行实际的调整大小。您可以通过各种方式重新转换脚本以使其更短,或保持明确。

    例如

    if [ $(identify -format "%[fx:w<h?1:0]" in.jpg) -eq 1 ]; then 
       convert in.jpg -resize x256 out.jpg; 
    else 
       convert in.jpg -resize 256x out.jpg; 
    fi
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 2015-12-04
      • 2014-02-08
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多