Sep 30, 2013 – 工具 & 软件 – 编程语言  脚本  批处理   – Bai

利用 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

上一篇:

下一篇:

回顶部