GraphicsMagick安装与IMG4图片压缩
前言:直接使用纯java压缩图片的效果很差
1、linux安装GraphicsMagick(widows安装比较简单,下载安装后配置环境变量),安装步骤如下:
1.1、安装libpng和libjpeg,安装过程如下
因为是图片处理,所以需要系统中安装了libpng和libjpeg的开发包,否则的话不会安装这两种文件的支持,GraphicsMagick就没法读取jpeg和png图片。如果之前已安装过imageMagick和jmagick,且可以正常生成图片的则直接进入GraphicsMagick的安装。
注意:下面所有的安装步骤都需要在root用户下完成。
首先使用rpm命令查看libpng和libjpeg是否已安装
rpm –qa | grep libjpeg
rpm –qa | grep libpng
没有安装则用yum install命令安装
#yum install -y libpng-devel libjpeg-devel libtiff-devel jasper-devel freetype-deve
1.2、下载GraphicsMagick
GraphicsMagick下载地址:http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/
1.3、安装GraphicsMagick
解压GraphicsMagick-1.3.12.tar.gz包
# tar -xvzf GraphicsMagick-1.3.12.tar.gz
# cd GraphicsMagick-1.3.12使用 configure 来进行自动的配置、build和安装
./configure --prefix=/data/nfs/GraphicsMagick --enable-libtool-verbose --with-included-ltdl --enable-shared --disable-static --with-modules --with-frozenpaths --without-perl --without-magick-plus-plus --with-quantum-depth=8 --enable-symbol-prefix
接下来就是安装# make
# make install
1.4、配置环境变量
# vi /etc/profile
在/etc/profile文件的最后添加如下配置:
第一段是java的环境变量,第二段才是GraphicsMagick的环境变量,个人装的版本是1.3.12
export JAVA_HOME=/usr/java/java
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export JAVA_HOME PATH CLASSPATH
export GMAGICK_HOME="/usr/local/GraphicsMagick-1.3.12"
export PATH="$GMAGICK_HOME/bin:$PATH"
LD_LIBRARY_PATH=$GMAGICK_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
tips:安装完成后是要配置环境变量的,配置成功后可以直接运行gm命令
1.5、测试GraphicsMagick是否安装成功
使用命令查看GraphicsMagick所支持的图片格式:
# gm convert -list formats
如果列表中如果显示PNG、JPEG、GIF等则表示已支持图片转换。
测试安装是否正常,使用如下命令:
# gm convert -resize 100x80^ -gravity Center -crop 100x80+0+0 sample.jpg thumb.jpg
命令说明:gravity 表示中心坐标,可选值为 Center , NorthWest(左上), NorthEast(右上), SouthWest(左下), SouthEast(右下) ,由Center参数即由中心开始向两边裁剪,+指定x轴向y轴向的偏移量。sample.jpg/png为要裁剪的图片且必须存在,thumb.jpg/png为裁剪后生成的新图片,可以拷贝生成的文件到本地后查看,能正常显示,则说明所有安装均正常。
1.6、如果安装时使用root用户安装,使用别的用户时要先进行授权
给boat用户授权
# chown -R boat:users /usr/local/GraphicsMagick-1.3.12
2、核心代码(安装完GraphicsMagick就可以玩了,以下为java代码)
先引入img4java的包<dependency>
<groupId>org.im4java</groupId>
<artifactId>im4java</artifactId>
<version>1.4.0</version>
</dependency>
public class ImageManage {
public void zoomImage(Integer width, Integer height, String srcPath, String newPath) throws Exception {
IMOperation op = new IMOperation();
op.addImage(srcPath);
if (width == null) {// 根据高度缩放图片
op.resize(null, height);
} else if (height == null) {// 根据宽度缩放图片
op.resize(width, null);
} else {
op.resize(width, height);
}
op.quality(85d);
op.addImage(newPath);
// 这里不加参数或者参数为false是使用ImageMagick,true是使用GraphicsMagick
ConvertCmd convert = new ConvertCmd(true);
// linux下不要设置此值,不然会报错
// convert.setSearchPath(File.separator + "mnt" + File.separator +
// "ftpupload" + File.separator + "benhao" + File.separator +
// "GraphicsMagick-1.3.21");
convert.run(op);
}
public static void main(String[] args) {
File file = new File("C://Users//iteas1//Desktop//2.jpg");
ImageManage imageManage = new ImageManage();
try {
imageManage.writeImage(file, "2.jpg");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}