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`
最后显示结果:
3 完整脚本
来源:oschina
链接:https://my.oschina.net/u/4231975/blog/4277422