void

JMagick

JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagickAPI的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快。JMagick只实现了ImageMagicAPI的一部分功能,它的发行遵循LGPL协议
ImageMagick请参考其官方网站ImageMagick学习

 

下载安装

  安装要求:

  1. 如果通过CVS下载的源码,则需要GNU Autoconf
  2. GNU Make 3.77或更新版本(我用的是3.7.9).
  3. 一个ANSI C 编译器,建议用 GNU 或 EGCS 的编译器
  4. ImageMagick 5.5.6或更新版本
  5. Java2 JDK( JMagick是在 Sun JDK 1.4.1上开发,但运行好象不用那么高,我用的是1.3.1)


下载过程如下:
用CVS取源码:

cvs -d :pserver:anonymous@jmagick.yeo.nu:/var/cvs/jmagick login
Password: jmagick
cvs -d :pserver:anonymous@jmagick.yeo.nu:/var/cvs/jmagick checkout Jmagick


也可以直接下载JMagick-5.5.6-X.tar.gz包。
根据INSTALL文档指示,编译如下:

对下载包:
tar zxvf Jmagick-5.5.6-X.tar.gz
cd Jmagick-5.5.6-X
对CVS取回来的源码
cd JMagick
autoconf
以下为两种情况都相同的部分
./configure
make all
su
make install
make javadoc
make test <--如果x-win没有启动,大部分测试是成功的,但也会显示一些错误信息,因为没法显示图片。

 

通过JMagick,实现JSP上传图片文件后生成缩略图的功能


  Jmagick自身带的Test.java程序,演示了如何使用JMagick来实现图片的复制、信息获取、斜角、特效、组合、改变大小、加边框、旋转、切片、改变格式、去色等等功能,编程的重要参考。
  下面主要描述如何实现将用JSP上传的图片,进行压缩生成缩略图。用jsp上传文件的全部代码,参见利用apache-commons-fileupload写jsp上传文件,下面只描述图片压缩的实现。






$TOMCATHOME/webapps/yourproject/WEB-INF/classes/com/hedong/JMagick/PicResize.java

package com.hedong.JMagick;
import org.apache.log4j.*;
import java.awt.Dimension;
import java.awt.Rectangle;
import magick.ImageInfo;
import magick.MagickImage;
import magick.MagickException;
import magick.QuantizeInfo;
import magick.ColorspaceType;
import magick.MagickApiException;
import magick.PixelPacket;
import magick.DrawInfo;
import magick.ResolutionType;
import magick.ProfileInfo;
import magick.MontageInfo;
import magick.Magick;
import magick.MagickInfo;
import java.io.IOException;
import java.io.FileOutputStream;
public class PicResize {
   
static Logger logger = Logger.getLogger(PicResize.class.getName());
   
public void resize(String picFrom,String picTo) {
     
try {
       
// Resize
       ImageInfo info = new ImageInfo(picFrom);
       MagickImage image 
= new MagickImage(new ImageInfo(picFrom));
       MagickImage scaled 
= image.scaleImage(10080);//小图片文件的大小.
       scaled.setFileName(picTo);
       scaled.writeImage(info);
       logger.info(
"alter pic form "+picFrom +" to "+picTo);
     } 
catch(MagickApiException ex) {
       logger.error(
"MagickException: " + ex + "" + ex.getReason() + "" + ex.getDescription());
     } 
catch(MagickException ex) {
       logger.error(
"MagickException: " + ex);
     }
   }
}


注意,需要将编译JMagick生成的lib/jmagick.jar包,复制到$TOMCATHOME/webapps/yourproject/WEB-INF/lib目录下。

posted on 2011-07-10 10:51 void 阅读(334) 评论(0)  编辑  收藏 所属分类: Jmagick


只有注册用户登录后才能发表评论。


网站导航: