调整模N的大小

时间:2015-10-05 11:51:39

标签: imagemagick imagemagick-convert

我有各种高度的照片,需要将它们调整到最接近的高度模N.

示例:

原始档案:

1200x956

我需要h%N = 0 with N = 20。然后预期的输出是:

1200x960

因为960%20 = 0。

谢谢。

1 个答案:

答案 0 :(得分:0)

这可以通过一个简单的脚本来解决。例如,采用以下逻辑流程。

  • 迭代所有图片列表
  • 捕获当前图像宽度
  • 虽然不是20的模数
    • 模数增加超过10
    • 模量减少小于10%
    • 根据需要重复
  • files="first_image.jpg second_image.jpg" for file in $files do # Capture original width let width=$(identify -format '%w' $file) # Identify offset let offset=$(expr $width % 20) # Repeat until offset is 0 while [ $offset -ne 0 ] do # Increment/Decrement width as needed if [ $offset -lt 10 ] then width=$(($width-1)) else width=$(($width+1)) fi # Update offset offset=$(expr $width % 20) done # Overwrite image with newly found width mogrify -resize ${width}x $file done 原始图片,已调整宽度值。
expr $width % 20

修改

上面的例子可以简化。甚至可能会计算files="first_image.jpg second_image.jpg" delta() { mod=$(expr $1 % 20) [[ $mod -lt 10 ]] && echo $(expr $mod \* -1) || echo $(expr 20 - $mod) } for file in $files do let width=$(identify -format %w $file) let height=$(identify -format %h $file) let new_width=$(($width + $(delta $width))) let new_height=$(($height + $(delta $height))) mogrify -resize "${new_width}x${new_height}" $file done 的评估。

{{1}}