如何使用ImageMagick进行大规模转换/调整不同方向的图像?

时间:2014-07-06 12:33:30

标签: image-processing graphics imagemagick imagemagick-convert

我有一些包含垂直和水平图像的文件夹,我希望将图像调整为更小的格式和更低的质量。

其中一些格式为:

  1. width = 3x,height = 2x - 即3000x2000或1500x1000。
  2. width = 2x,height = 3x - 即2000x3000或1000x1500。
  3. 如何为convert表达这样的命令行,将它们转换为质量较低的两种较小格式并调整大小:

    1. width = 900,height = 600
    2. 身高= 600,身高= 900
    3. 如何使此命令行仅适用于水平图像w > h

      convert *.jpg -resize 900x600 -quality 80 *.jpg

      我不能使用这样的语法:

      1. convert *.jpg -resize 50% -quality 80 *.jpg - 所有图片都可以有不同的宽度。

2 个答案:

答案 0 :(得分:0)

有几种选择......

选项1

如果要根据方向调整为1500x1000或1000x1500,可以使用@ area count option指定调整大小命令中的像素数,图片将保留比例。因此,无论方向如何,您总共需要1500000像素:

mogrify -resize 1500000@ *.jpg

选项2

您可以使用这样的小脚本来确定每个图像是高(纵向)还是宽(横向),然后对每个图像进行任何处理:

#!/bin/bash
for f in *.jpg
do
   read w h <<< $(convert "$f" -ping -format "%w %h" info: )
   if [ $w -gt $h ]; then
      echo "$f is $h tall and $w wide (landscape)"
   else
      echo "$f is $h tall and $w wide (portrait)"
   fi
done

将脚本保存为go,然后键入:

chmod +x go
./go

它会遍历所有的JPEG并告诉你它是什么。

答案 1 :(得分:0)

我发现我可以使用mogrify -path out -resize 900x900 -quality 90% *.jpg并将水平和垂直图像一次调整为900x600或600x900。

900x900并不意味着900宽度和900高度,而是扩大规模以限制。