旋转,然后使用ImageMagick和bash调整图像目录的大小

时间:2013-03-13 13:25:03

标签: bash imagemagick image-resizing

我想检查并查看目录中的所有图像是横向还是纵向,如果它们是横向的,则它们是纵向的。旋转后,我想调整图像的大小,使其具有特定的分辨率(每厘米118个点)和水平尺寸(9厘米)。

总结:

  • 所有图像均为
  • 每厘米118点的分辨率
  • 9cm水平尺寸

我知道识别可以拉尺寸,但我不知道如何拉出单独的高度/宽度值。

基本上,我想这样做:

FILES=/path/to/*
for i in $FILES
identify -format "%f,%w,%h"
do
  if [%w -gt %h]
    then
    convert -rotate 90 $i

  mogrify -resize -density ?x? -resolution? -PixelsPerCm $i $i_resized.jpg
done

最终,我想将这些平铺为1m x任何长度文件,以便从绘图仪打印。谢谢!

2 个答案:

答案 0 :(得分:3)

也许是这样的?

read f w h < <(identify -format "%f %w %h" "$imagefile")
if (( $w > $h )) ; then
    # convert
fi

答案 1 :(得分:1)

图片尺寸似乎是identify输出中的第三列:

$ identify someimage.jpg
someimage.jpg JPEG 600x450 600x450+0+0 8-bit DirectClass 205KB 0.010u 0:00.009

因此,您可以使用cut来提取维度:

f_size=$(identify $f | cut -f3 -d' ')

这会给你一些ike 600x450。有多种方法可以分离这些值。例如:

f_width=${f_size%x*}
f_height=${f_size#*x}

使用-format参数更容易:

set -- $(identify -format '%w %h')
f_width=$1
f_height=$2