最近要用Java写一个操作图片的程序。虽然Java的ImageIO也可以实现同样的功能,但是效率上明显不能和C写的ImageMagick比啊。JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagick API的Java访问接口,但目前只实现了ImageMagic API的一部分功能。Jmagick文档地址:http://www.jmagick.org/jmagick-doc/
我使用的是Centos 6.5。首先查看已经安装的JMagick包,如果有就卸载旧的包。
rpm -qa | grep ImageMagick rpm -qa | grep jmagick
下面是安装部分:
1.先查看依赖包的安装情况
rpm -q libjpeg libjpeg-devel libpng libpng-devel libtiff libtiff-devel libungif libungif-devel perl-CPAN perl make gcc
将未安装的包用一下命令进行安装
yum install libjpeg yum install libjpeg-devel yum install libpng yum install libpng-devel yum install libtiff yum install libtiff-devel yum install libungif yum install libungif-devel yum install perl-CPAN
我用libjpeg-turbo替代了libjpeg,giflib替代了libungif。
2.下载新版本的ImageMagick和JMagick
wget http://www.jmagick.org/6.4.0/ImageMagick-6.4.0-0.tar.gz wget http://www.jmagick.org/6.4.0/jmagick-6.4.0-src.tar.gz
3.安装ImageMagick
tar -xzvf ImageMagick-6.4.0-0.tar.gz mkdir /usr/local/imagemagick cd ImageMagick-6.4.0-0 ./configure --prefix=/usr/local/imagemagick/ make make install
配置环境变量,export PATH=/usr/local/imagemagick/bin:$PATH
vi /etc/profile source /etc/profile
检验是否安装成功,输入convert。
4.安装JMagick
tar -xzvf jmagick-6.4.0-src.tar.gz cd 6.4.0 ./configure make make install cd lib cp *.so /usr/lib
把so库文件路径加载到配置文件add: /usr/local/imagemagick/lib
vi /etc/ld.so.conf ldconfig
把libJMagick.so拷贝到jdk的amd64目录里。再将jmagick.jar拷贝到jdk的ext目录下。
cp /usr/local/jmagick/lib/libJMagick.so /usr/java/jdk1.6.0_32/jre/lib/amd64/ cp /usr/local/jmagick/lib/jmagick-6.4.0.jar /usr/java/jdk1.6.0_32/jre/lib/ext/
需要注意的一点:如果你的CentOS是64的,那么JDK也需要安装64位的,否则得话程序里调用jmagick.jar是不会成功的!
5.在Java程序中使用JMagick库
在程序中需要加入下面的代码才可以正常运行
System.setProperty("jmagick.systemclassloader", "no");
最后,应该已经可以成功使用JMagick库了。有问题可以留言交流。