0

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

总之:

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

我知道 identify 可以拉尺寸,但我不确定如何拉单个高度/宽度值。

基本上,我想这样做:

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 任意长度的文档,以便从绘图仪打印。谢谢!

4

2 回答 2

3

也许是这样的?

read f w h < <(identify -format "%f %w %h" "$imagefile")
if (( $w > $h )) ; then
    # convert
fi
于 2013-03-13T13:58:08.713 回答
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
于 2013-03-13T13:35:17.507 回答