JMagick

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:[email protected]:/var/cvs/jmagick login
Password: jmagick
cvs -d :pserver:[email protected]:/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( 100 80 ); // 小图片文件的大小.
       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目录下。

你可能感兴趣的:(JMagick)