Alonek 2017-03-06
ImageMagick是一个很好用的对图片进行格式转换、缩减大小、裁剪等等进行操作的工具,在Windows和Linux系统都可以安装,因为我们的环境是Linux环境,所以我就以Linux系统为安装环境进行测试。
系统环境:
# cat /etc/SUSE-release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2
一、编译安装环境
ImageMagick下载链接
https://www.imagemagick.org/download/ImageMagick.tar.gz
因为生产环境需要对png格式的图片进行修改,所以需要png库的支持,这里需要编译libpng-1.5.8.tar.gz,相应的如果你的图片格式是其他格式的,你就需要其他的库文件的支持。
/home/sxzhou # ll
total 13532
-rw-r--r-- 1 root root 12769934 Mar 2 14:02 ImageMagick.tar.gz
-rw-r--r-- 1 root root 1059513 Mar 2 14:12 libpng-1.5.8.tar.gz
编译安装libpng
/home/sxzhou # tar -zxf libpng-1.5.8.tar.gz
/home/sxzhou # cd libpng-1.5.8/
/home/sxzhou/libpng-1.5.8 # ./configure
/home/sxzhou/libpng-1.5.8 # make && make install
编译安装ImageMagick
/home/sxzhou # tar -zxf ImageMagick.tar.gz
/home/sxzhou # cd ImageMagick-7.0.5-0/
/home/sxzhou/ImageMagick-7.0.5-0 # ./configure --prefix=/usr/local/ImageMagick --enable-share --enable-static LDFLAGS="-L/usr/lib64" CPPFLAGS="-I/usr/include"
这一步之后在末尾可以看到对于png图片格式的支持
PANGO --with-pango=yes no
PERL --with-perl=no no
PNG --with-png=yes yes
RAQM --with-raqm=yes no
RSVG --with-rsvg=no no
/home/sxzhou/ImageMagick-7.0.5-0 # make && make install
/usr/local/ImageMagick # ldconfig /usr/local/lib
二、使用案例
2.1、对图片大小进行修改
-resize 对图片大小进行修改
/usr/local/ImageMagick/bin # ./convert -resize 500x300 /home/sxzhou/1.PNG /home/sxzhou/2.PNG
注意:
使用字母x代表乘号而不是*
参数说明:
500x300是指图片的宽x长(也可以只指明宽或者长,例如-resize 500,指明宽度,长度会按比例进行相应缩减,-resize x300,指明长度,宽度会按比例进行相应缩减)
/home/sxzhou/1.PNG 为源文件,也就是修改前的文件
/home/sxzhou/2.PNG 为目标文件,也就是修改后的文件
2.2、按比例缩减图片
-sample 按比例缩减图片
/usr/local/ImageMagick/bin # ./convert -sample 50% /home/sxzhou/1.PNG /home/sxzhou/3.PNG
以字节为单位显示文件大小
/home/sxzhou # du -sk *.PNG
120 1.PNG
112 2.PNG
56 3.PNG
把3.PNG拉出来查看图片大小(宽x高)可以发现也缩减了一半
2.3、对图片进行优化以及批量修改图片
在生产环境中经常会遇到对于图片大小要求尽可能小而清晰度高的情况,这时候就需要对于图片修改时加入优化的参数。
+profile “*” 去掉图片的exif信息
-quality 85 对图片的质量进行缩减(质量缩减直到75的范围内,肉眼识别的差别基本很小)
如下面所示:
在生产环境如果遇到批量修改图片,而且对于小于一定大小的图片不进行压缩,另外对于图片前后名字不变,如果同时满足以上的条件的话就需要组合命令。
/usr/local/ImageMagick/bin # ln -s /usr/local/ImageMagick/bin/convert /usr/bin/convert
修改前的图片大小
/home/sxzhou/ # du -sk *.png
44 BG00.png
428 BG01.png
80 BG10.png
44 BG11.png
1788 BJ00.png
592 BJ01.png
96 BJ10.png
批量修改图片
/home/sxzhou/ # find -name "*.png" -exec convert -resize '500x360>' {} {} \;
修改后的图片大小
/home/sxzhou/ # du -sk *.png
44 BG00.png
208 BG01.png
80 BG10.png
44 BG11.png
256 BJ00.png
260 BJ01.png
96 BJ10.png
可以看到只有红色部分标记的图片改变了大小。
相关阅读:
ImageMagick 的详细介绍:请点这里
ImageMagick 的下载地址:请点这里