最近要用java写一个操作图片的程序。虽然Java的ImageIO也可以实现同样的功能,但是效率上明显不能和C写的ImageMagick比啊。JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagickAPI的Java访问接口,但目前只实现了ImageMagic API的一部分功能。Jmagick文档地址:http://www.jmagick.org/jmagick-doc/
我使用的是Centos 6.5。首先查看已经安装的JMagick包,如果有就卸载旧的包。
rpm -qa | grep ImageMagickrpm -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 libjpegyum install libjpeg-develyum install libpngyum install libpng-develyum install libtiffyum install libtiff-develyum install libungifyum install libungif-develyum 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.gzwget http://www.jmagick.org/6.4.0/jmagick-6.4.0-src.tar.gz
3.安装ImageMagick
tar -xzvf ImageMagick-6.4.0-0.tar.gzmkdir /usr/local/imagemagickcd ImageMagick-6.4.0-0./configure --PRefix=/usr/local/imagemagick/makemake install
配置环境变量,export PATH=/usr/local/imagemagick/bin:$PATH
vi /etc/profilesource /etc/profile
检验是否安装成功,输入convert。
4.安装JMagick
tar -xzvf jmagick-6.4.0-src.tar.gzcd 6.4.0./configuremakemake installcd libcp *.so /usr/lib
把so库文件路径加载到配置文件add: /usr/local/imagemagick/lib
vi /etc/ld.so.confldconfig
把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库了。有问题可以留言交流。
新闻热点
疑难解答