其实,如果只是取缩略图,Java本身就自带了相关的API,不需要强大的ImageMagick,但是我的源图是PSD格式,Java默认是读不了的,有个java-psd-library开源项目,是纯java写的,经过测试,生成的图片全黑,放弃。最终选择了JMagick和ImageMagick的组合。做转换的是ImageMagick,Jmagick只是封闭的jni接口而已。 JMagick依赖ImageMagick,先装ImageMagick: ./configure make sudo make install sudo ldconfig /usr/local/lib
安装JMagick: autoconf ./configure --with-java-home=/home/fhp/Programs/jdk1.6.0_39 make all make install
配置参数需要加上jdk目录 复制生成的库到jre的lib目录,下面是64位的路径: cp /usr/local/lib/libJMagick.so /home/fhp/Programs/jdk1.6.0_39/jre/lib/amd64
在程序中调用(先把JMagick的src下的源代码拷到项目中):
package com.pocketdigi.psd;
import java.awt.Dimension;
import java.io.IOException;
import magick.ImageInfo;
import magick.MagickImage;
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//取得原文件
try {
ImageInfo sourceInfo=new ImageInfo( "/media/share/material/seal_social_icons.psd" );
MagickImage image = new MagickImage(sourceInfo );
//获取图片的宽高
Dimension dim=image.getDimension();
MagickImage small = image.scaleImage(dim.width,dim.height);
small.setFileName( "/media/share/material/seal_social_icons.jpg");
small.writeImage( new ImageInfo() );
} catch (Exception e1) {
e1.printStackTrace();
}
}
}