Linux上imagemagick对图片进行压缩,convert命令的压缩率还不错

Linux上imagemagick对图片进行压缩,convert命令的压缩率还不错

这里要使用到强大的图片处理工具:imagemagick,它可以对图片进行格式转换、大小压缩、增加水印等操作,而不需要去写第三方的程序,只需要写简单的SHELL脚本就可以完成图片压缩操作,我的操作环境是UBUNTU,在UBUNTU下面安装这个软件超级简单:

    sudo apt-get install imagemagick

centos安装:   yum -y install ImageMagick

 

    其它linux有对应的软件安装命令,以下有我写的两个脚本,分别对图片进行批量格式以及压缩操作:

    图片格式转换,这里的示例是将[bB][mM][pP](所有BMP文件)格式的文件,转换为占空间小的jpg文件:

    

[c-sharp] view plaincopy

  1. #!/bin/sh  
  2. for img in `find ./ -name “*.[bB][mM][pP]”`; do  
  3.         #change upper filename to lower  
  4.         _imglower=`echo $img|tr “[:upper:]” “[:lower:]”`;  
  5.         #get file’s basename  
  6.         _basename=`basename $_imglower .bmp`;  
  7.         #get file’s dir  
  8.         _dirname=`dirname $img`;  
  9.         #get desc filename with path  
  10.         _basefullname=$_dirname”/”$_basename”.jpg”;  
  11.         #do convert  
  12.         convert $img $_basefullname;  
  13.         #remove bmp file  
  14.         rm $img;  
  15.         echo “deal $_basefullname successfully”;  
  16. done  

 

    图片压缩脚本:

    

[c-sharp] view plaincopy

  1. for img in `find ./ -name “*.[jJ][pP][gG]”`; do  
  2.                 convert -quality 95% -resize 85%*85% $img $img-resized;  
  3.                 rm $img;  
  4.                 mv $img-resized $img  
  5.                 echo $img  
  6. done  
  7. for img in `find ./ -name “*.[pP][nN][gG]”`; do  
  8.                 convert -resize 85%*85% $img $img-resized;  
  9.                 rm $img;  
  10.                 mv $img-resized $img  
  11.                 echo $img  
  12. done  
  13. for img in `find ./ -name “*.[gG][iI][fF]”`; do  
  14.                 convert -resize 85%*85% $img $img-resized;  
  15.                 rm $img;  
  16.                 mv $img-resized $img  
  17.                 echo $img  
  18. done  

利用Nginx的ngx_http_image_filter_module做实时的图片压缩缩略图

Linux上imagemagick对图片进行压缩,convert命令的压缩率还不错》有2个想法

  1. fredzeng

    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

  2. fredzeng

    快速恢复文件shell
    for f in `ll|awk ‘{print $NF}’|grep bak|awk -F “\.” ‘{print $1″.”$2}’`; do cp -p $f.bak $f; done

评论已关闭。