一个朋友的站有很多图片,需要帮忙压缩,于是花了一个小时构思了这个SHELL,在此分享(IF那段我写的很烂,因为我不熟悉SHELL的IF的OR用法,只能分别拆开写了,换到PHP的话只用一个in_array就清爽多了,懂得兄弟希望能够帮忙指正)
Limit后面是限制的字节数,只有大于该字节才会进行处理
Quality是图像质量,取值0-100左开右闭区间,范围是正整数
DIR是要压缩的图片目录
使用该脚本之前请先安装ImageMagick,以便能够正常使用

1
yum -y install ImageMagick

使用方法,把下面的代码保存成xxxx.sh,然后执行sh xxxx.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /bin/Bash
let Limit=350*1024
Quality=70
DIR="/root"
cd $DIR
for i in `find $DIR -name "*.???"`
do
FSIZE=`wc -c $i|awk '{print $1}'`
EXT=${i##*.}
if [ $FSIZE -ge $Limit ] && [ "$EXT" == "jpg" ] || [ "$EXT" == "JPG" ] || [ "$EXT" == "png" ] || [ "$EXT" == "PNG" ] || [ "$EXT" == "bmp" ] || [ "$EXT" == "BMP" ]; then
convert -resize 600x800 -quality $Quality $i $i
echo $i is Okay.
fi
done