用Java的ImageIO处理一个大于15M的JPG文件,内存溢出。
于是寻求新的解决方案,用ImageMagicK,发现处理图片速度不令人满意,于是切换至GraphicsMagicK,如下是总结。
“GraphicsMagick is a fork of ImageMagick. GraphicsMagick has a number of advantages compared to ImageMagick, the most prominent is it‘s superior performance.” -from im4java development guide.
如下是快速的总结:
GraphicsMagick(gm)是ImageMagick(im)派生出来的,性能好。
gm和im都需要安装依赖的库,才能处理如jpeg,png图片。
依赖的库有:zlib-1.2.8.tar.gz;libpng-1.6.23.tar.gz;jpegsrc.v9b.tar.gz, 需要首先安装。
ImageMagick安装直接可以用yum安装,如 list|grep -i imagemagick
GraphicsMagick安装需要本地编译安装,首先执行./configure 看看最后有没有png, jpeg, zlib.(重要)
性能上,15Mjpg文件resize,gm快~20%,图片越大,resize的尺寸越大,性能越明显。
Reference:
GraphicsMagick: http://www.graphicsmagick.org/
ImageMagick:http://www.imagemagick.org/script/index.php
Delegatge lib: ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates/