Imagemagick 调整模N的大小

Imagemagick 调整模N的大小,imagemagick,imagemagick-convert,bash,Imagemagick,Imagemagick Convert,Bash,我有不同高度的图片,需要将它们调整到最近的高度模N 例如: 原始文件: 1200x956 我需要h%N=0和N=20。那么预期的输出是: 1200x960 因为960%20=0 谢谢。这可以通过一个简单的脚本来解决。例如,以下面的逻辑流为例 迭代所有图像的列表 捕获当前图像宽度 而不是模数20 模量大于10时的增量 模量衰减小于10 根据需要重复 mogrify调整宽度值的原始图像 files=“first\u image.jpg second\u image.jpg” 对于$fil

我有不同高度的图片,需要将它们调整到最近的高度模N

例如:

原始文件:

1200x956
我需要
h%N=0和N=20
。那么预期的输出是:

1200x960
因为960%20=0


谢谢。

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

  • 迭代所有图像的列表
  • 捕获当前图像宽度
  • 而不是模数20
    • 模量大于10时的增量
    • 模量衰减小于10
    • 根据需要重复
  • mogrify
    调整宽度值的原始图像
files=“first\u image.jpg second\u image.jpg”
对于$files中的文件
做
#捕获原始宽度
让宽度=$(标识-格式为“%w”$文件)
#识别偏移量
let offset=$(expr$宽度%20)
#重复此操作,直到偏移量为0
而[$offset-ne 0]
做
#根据需要增加/减少宽度
如果[$offset-lt 10]
然后
宽度=$($width-1))
其他的
宽度=$($宽度+1))
fi
#更新偏移量
偏移量=$(expr$宽度%20)
完成
#用新找到的宽度覆盖图像
mogrify-调整${width}x$文件大小
完成
编辑

当然,上述例子可以简化。甚至可以计算
expr$width%20的求值

files=“first\u image.jpg second\u image.jpg”
delta(){
mod=$(expr$1%20)
[[$mod-lt 10]]和&echo$(expr$mod\*-1)| echo$(expr 20-$mod)
}
对于$files中的文件
做
let width=$(标识-格式%w$文件)
let height=$(标识-格式为%h$文件)
设新的_宽度=$($width+$(delta$width)))
设新高度=$($height+$(delta$height)))
mogrify-调整“${new_width}x${new_height}”文件大小
完成