在java环境中使用imagemagick
转自 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推荐的方式:
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()); }}日志引用使用jmagick做gif动画的缩略图