2013-03-13 79 views
0

我想檢查並查看目錄中的所有圖像是風景還是肖像,如果它們處於風景中,它們是否爲縱向。旋轉後,我想調整圖像大小,使其成爲特定的分辨率(每釐米118個點)和水平尺寸(9釐米)。旋轉,然後調整ImageMagick和bash的圖像目錄的大小

總結:

  • 在肖像的所有圖像
  • 分辨率每釐米118點
  • 9釐米水平尺寸

我知道識別可以拉的尺寸,但我我不確定如何拉高度/寬度值。

基本上,我想這樣做:

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 

最後,我想這些瓷磚到1米x任何lenth文件從繪圖儀打印。謝謝!

回答

3

也許這樣的事情?

read f w h < <(identify -format "%f %w %h" "$imagefile") 
if (($w > $h)) ; then 
    # convert 
fi 
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 
+0

謝謝。只是爲了格式化我自己[這裏](http://www.linuxquestions.org/questions/linux-general-1/getting-image-size-imagemagick-352671/)。您是否熟悉打印尺寸/分辨率而不是像素尺寸的尺寸調整?謝謝! – ryanjdillon 2013-03-13 13:39:06

+0

我不知道我理解你的問題。您知道您的目標分辨率(每釐米118個點),因此,計算目標打印尺寸的適當像素尺寸看起來就像'所需尺寸(cm)* 118'一樣簡單。 – larsks 2013-03-13 13:45:01

+0

啊,對。所以像'convert -size 1062x -units pixelspercentimeter -density 118x118 image.jpg image_new.jpg'? – ryanjdillon 2013-03-13 13:54:41