在java环境中使用imagemagick

转自 http://marshal.easymorse.com/archives/1556

 

可以使用的第三方工具库是:

  1. jmagick(http://www.jmagick.org/
  2. im4java(http://im4java.sourceforge.net/

两者并不冲突,因为实现的方式不一样。前者是通过jni和imagemagick的函数交互,后者是在java中起新的进程通过imagemagick命令处理图片。

在java程序中使用,应该还是jmagick更方便一些。

在ubuntu安装jmagick的办法:

sudo apt-get install jmagick

 

然后,可以在以下路径可找到jmagick*.jar文件按:

/usr/share/java

在使用时引入这个jar文件即可。另外,该jar文件中的程序,通过jni访问imagemagick的API,需要加载jmagick提供的jni的动态库,该文件在:

/usr/lib/jni/libJMagick.so

这个动态库所在的目录并非ubuntu linux的动态库加载路径中,可以在java程序打印:

System.getProperty(“java.library.path”)

会发现该路径不在java加载目录列表中,这已经被提交到ubuntu的bug列表中:

https://bugs.launchpad.net/ubuntu/+source/sun-java6/+bug/325506

我这里采用的是在/etc/profile中增加如下内容作为临时解决办法:

export LD_LIBRARY_PATH=/usr/lib/jni

LD_LIBRARY_PATH加载方式不是linux推荐的方式:

http://xahlee.org/UnixResource_dir/_/ldpath.html

可是推荐的ldconfig命令对java并不生效。

还有个问题,就是如果使用maven,可将jmagick的jar文件注册到自己的maven repository服务器上,这样就可以用类似下面的方式引入jmagick库:

<dependency>
<groupId>jmagick</groupId>
<artifactId>jmagick6</artifactId>
<version>6.2.6-0</version>
</dependency>

编写一个简单的程序,测试了一下上述配置的环境,测试通过。

  
import magick. * ; /** * Hello world! * */ public class App { public static void main( String[] args ) throws Exception { MagickImage image = new MagickImage( new ImageInfo( " /home/ubuntu/10261.gif " ) ); image = image.scaleImage( 60 , 60 ); image.setFileName( " /home/ubuntu/r1.gif " ); image.writeImage( new ImageInfo()); } }

你可能感兴趣的:(ImageMagick)