0%

Java 使用JMagick和ImageMagick获取图片缩略图(支持PSD)

其实,如果只是取缩略图,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();
        }
        
    }

}