转自 http://marshal.easymorse.com/archives/1556
可以使用的第三方工具库是:
两者并不冲突,因为实现的方式不一样。前者是通过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推荐的方式:
可是推荐的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()); } }