利用 ImageMagick 和 Bash 脚本批量剪裁图片
任务描述
对某一个目录里面的所有图片文件进行剪裁,使得到的图片具有相同的尺寸。
脚本程序
1 #! /bin/bash
2
3 for f in `ls $1`
4 do
5 convert "$1/$f" -crop WidthxHeight+X0+Y0 "$2/$f"
6 done
程序解释
首先利用ls
命令列出原始图片目录的所有文件名称,此时会得到一个文件名称列表,然后利用for
循环逐个将列表中的文件名称赋值给循环变量f
,此时f
就代表原始图片目录中的图片文件。最后就是利用ImageMagick
工具中的convert
转换命令对每个图片文件进行剪切处理,并将其保存到剪切图片目录中,文件名称不变。
程序中需要设置 4 个参数:Width
-宽度像素值、Height
-高度像素值、X0
-偏离图片左上角点的横向位移、Y0
-偏离图片左上角点的纵向位移。
注意事项
通过程序中的四个参数可以发现,每个图片都是以左上角点为参考点进行剪裁的,因此要求每张图片中的内容的分布都要一致。
应用举例
在扫描书籍时,扫描得到的图片中扫面背景要比实际的书籍内容大,因此需要将图片中多余的背景剪裁掉。
例如在当前目录中的 Pictures 目录中存在 100 张大小为 1000x600 pixels 的图片,需要将其剪裁至大小为 800x500 pixels 的图片,并保存至当前目录中的 Crop 目录中。
首先,在当前目录中创建 crop.sh 脚本文件并添加以下内容:
1 #! /bin/bash
2
3 for f in `ls $1`
4 do
5 convert "$1/$f" -crop 800x500+0+0 "$2/$f"
6 done
然后,添加可执行权限:
# chmod +x crop.sh
最后,在终端中执行:
# ./crop.sh Pictures Crop
上一篇: 逆向工程基本步骤与关键技术
下一篇:文件批量重命名 Bash 脚本