home

Love life, love sports, love to learn, & love...

Blog

Thought,  done  &  record.

订阅到QQ邮箱 google reader google reader

利用 ImageMagick 和 Bash 脚本批量剪裁图片

任务描述

对某一个目录里面的所有图片文件进行剪裁,使得到的图片具有相同的尺寸。

脚本程序

#! /bin/bash 

for f in `ls $1` 
do 
   convert "$1/$f" -crop WidthxHeight+X0+Y0  "$2/$f"
done

程序解释

首先利用 ls 命令列出原始图片目录的所有文件名称,此时会得到一个文件名称列表,然后利用 for 循环逐个将列表中的文件名称赋值给循环变量 f,此时 f 就代表原始图片目录中的图片文件。最后就是利用 ImageMagick 工具中的 convert 转换命令对每个图片文件进行剪切处理,并将其保存到剪切图片目录中,文件名称不变。

程序中需要设置 4 个参数:Width-宽度像素值、Height-高度像素值、X0-偏离图片左上角点的横向位移、Y0-偏离图片左上角点的纵向位移。

注意事项

通过程序中的四个参数可以发现,每个图片都是以左上角点为参考点进行剪裁的,因此要求每张图片中的内容的分布都要一致。

应用举例

在扫描书籍时,扫描得到的图片中扫面背景要比实际的书籍内容大,因此需要将图片中多余的背景剪裁掉。

例如在当前目录中的 Pictures 目录中存在 100 张大小为 1000x600 pixels 的图片,需要将其剪裁至大小为 800x500 pixels 的图片,并保存至当前目录中的 Crop 目录中。

首先,在当前目录中创建 crop.sh 脚本文件并添加以下内容:

#! /bin/bash 

for f in `ls $1` 
do 
   convert "$1/$f" -crop 800x500+0+0  "$2/$f"
done

然后,添加可执行权限:

# chmod +x crop.sh

最后,在终端中执行:

# ./crop.sh Pictures Crop
回顶部