Linux上imagemagick对图片进行压缩,convert命令的压缩率还不错
这里要使用到强大的图片处理工具:imagemagick,它可以对图片进行格式转换、大小压缩、增加水印等操作,而不需要去写第三方的程序,只需要写简单的SHELL脚本就可以完成图片压缩操作,我的操作环境是UBUNTU,在UBUNTU下面安装这个软件超级简单:
sudo apt-get install imagemagick
centos安装: yum -y install ImageMagick
其它linux有对应的软件安装命令,以下有我写的两个脚本,分别对图片进行批量格式以及压缩操作:
图片格式转换,这里的示例是将[bB][mM][pP](所有BMP文件)格式的文件,转换为占空间小的jpg文件:
- #!/bin/sh
- for img in `find ./ -name “*.[bB][mM][pP]”`; do
- #change upper filename to lower
- _imglower=`echo $img|tr “[:upper:]” “[:lower:]”`;
- #get file’s basename
- _basename=`basename $_imglower .bmp`;
- #get file’s dir
- _dirname=`dirname $img`;
- #get desc filename with path
- _basefullname=$_dirname”/”$_basename”.jpg”;
- #do convert
- convert $img $_basefullname;
- #remove bmp file
- rm $img;
- echo “deal $_basefullname successfully”;
- done
图片压缩脚本:
- for img in `find ./ -name “*.[jJ][pP][gG]”`; do
- convert -quality 95% -resize 85%*85% $img $img-resized;
- rm $img;
- mv $img-resized $img
- echo $img
- done
- for img in `find ./ -name “*.[pP][nN][gG]”`; do
- convert -resize 85%*85% $img $img-resized;
- rm $img;
- mv $img-resized $img
- echo $img
- done
- for img in `find ./ -name “*.[gG][iI][fF]”`; do
- convert -resize 85%*85% $img $img-resized;
- rm $img;
- mv $img-resized $img
- echo $img
- done
for img in `find ./ -mmin -60 -name “*.[jJ][pP][gG]”`; do
convert -quality 75% -resize 100%*100% $img $img-resized;
mv $img $img.bak;
mv $img-resized $img
echo $img
done
快速恢复文件shell
for f in `ll|awk ‘{print $NF}’|grep bak|awk -F “\.” ‘{print $1″.”$2}’`; do cp -p $f.bak $f; done