代码之家  ›  专栏  ›  技术社区  ›  ryanjdillon

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

  •  0
  • ryanjdillon  · 技术社区  · 11 年前

    我想检查一下目录中的所有图像是横向的还是纵向的,如果它们是横向的,我想检查它们是纵向的。旋转后,我想调整图像的大小,使其具有特定的分辨率(每厘米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
    

    最终,我想将这些平铺到1米x任意长度的文档中,以便从绘图仪打印。谢谢

    2 回复  |  直到 11 年前
        1
  •  3
  •   William    11 年前

    也许是这样的?

    read f w h < <(identify -format "%f %w %h" "$imagefile")
    if (( $w > $h )) ; then
        # convert
    fi
    
        2
  •  1
  •   larsks    11 年前

    图像尺寸显示为 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' ')
    

    这会给你一些类似的东西 600x450 。有多种方法可以分离这些值。例如:

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

    有了 -format 自变量:

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