1 概述

使用convert命令做的小型图片压缩脚本,只需要一个参数指定压缩质量,会压缩当前文件夹的jpg/jpeg/png。

sh compress.sh 75

压缩完成后会显示最大最小以及平均压缩率。

2 主要流程

先判断当前文件夹是否存在图片,以及获取图片数量:

picNums=`ls | grep -iE "*.jpg|*.png|*.jpeg" | grep -v "_compress" | wc -l`

接着计算原来文件大小,并分离文件名,得到主文件名与后缀名:

originalSize=`ls -l $i | awk '{print $5}'`
basename=`basename $i`
filename="${basename%.*}"
suffix="${basename##*.}"
compressFileName="$filename._compress.$suffix"

再判断主文件名是否含compress(已压缩过的会添加compress,保留原文件),接着计算比率:

convert -quality $1 $i $compressFileName
compressedSize=`ls -l $compressFileName | awk '{print $5}'`
ratio=$(printf "%.2f" `echo "scale=2;$compressedSize/$originalSize"|bc`)
if [[ `echo "$ratio<$minRatio" | bc` == 1 ]]
then
    minRatio=$ratio
fi
if [[ `echo "$ratio>$maxRatio" | bc` == 1 ]]
then
    maxRatio=$ratio
fi
totalRatio=`echo "$totalRatio+$ratio"|bc`

最后显示结果:
图片压缩脚本_第1张图片

3 完整脚本

github.