因为采集的时候为了加快速度所以未对采集的图片做缩小尺寸和压水印的操作,最后导致图片占用了服务器上有90GB的空间,为了减小图片所占的空间顺便加上水印便用了Imagemagick命令行工具在linux下对所有的图片进行了尺寸缩小以及添加水印,经过实践发现这个方法的效率远远超出在采集的时候对图片进行操作,以下是操作笔记以备日后查阅。
首先安装Imagemagick
我的是debian系统
#Debian安装imagemagick
apt-get install imageMagick -y
#这里可能很多同学会发现系统会提示未找到安装包,可以先执行
apt-get update && apt-get -f upgrade
#再执行
apt-get install imageMagick -y
#如果还是提示未找到安装包之类的就执行
aptitude install imagemagick
如果是centos的系统当然就得执行
yum install imageMagick -y
安装完ImageMagick
编写批量处理图片的脚本
#!/bin/bash
for each in /home/www/website/imgfloder/*{.jpg,.gif,.png}
do
s=`du -k $each | awk '{print $1}'`
if [ $s -gt 10 ]; then
convert -quality 80 -resize '750x540>' $each $each
composite -gravity southeast -dissolve 80 /home/www/website/watermark.png $each $each 2>/dev/null
echo "$each: done!"
fi
done
exit 0
说明:
以上脚本处理的时候处理后的图片会覆盖原始图片
/home/www/website/imgfloder/,这是待处理图片的目录,即,将对该目录内的所有图片处理
if [ $s -gt 10 ],表示不对大小小于10kb的图片进行处理
convert -quality 80 -resize ’750×540>’,表示处理后的图片质量为原图片的80%,并对尺寸大于750*540的图片缩小至此范围内,而对小于此尺寸的不做处理。
-gravity southeast,这个决定图片水印的位置south就是南east就是东也就是图片的右下角。
-dissolve 80,这个是设置水印的透明度的80代表透明度,这个数值越小越透明。
最后将脚本存储后执行就可以了,例如将脚本存为crimg.sh,执行sh ./crimg.sh即可。
chmod +x ./crimg.sh