JMagick
JMagick是一個(gè)開源API,利用JNI(Java Native Interface)技術(shù)實(shí)現(xiàn)了對(duì)ImageMagickAPI的Java訪問(wèn)接口,因此也將比純Java實(shí)現(xiàn)的圖片操作函數(shù)在速度上要快。JMagick只實(shí)現(xiàn)了ImageMagicAPI的一部分功能,它的發(fā)行遵循LGPL協(xié)議。
ImageMagick請(qǐng)參考其官方網(wǎng)站或ImageMagick學(xué)習(xí)。
ImageMagick請(qǐng)參考其官方網(wǎng)站或ImageMagick學(xué)習(xí)。
下載安裝
安裝要求:
- 如果通過(guò)CVS下載的源碼,則需要GNU Autoconf
- GNU Make 3.77或更新版本(我用的是3.7.9).
- 一個(gè)ANSI C 編譯器,建議用 GNU 或 EGCS 的編譯器
- ImageMagick 5.5.6或更新版本
- Java2 JDK( JMagick是在 Sun JDK 1.4.1上開發(fā),但運(yùn)行好象不用那么高,我用的是1.3.1)
下載過(guò)程如下:
用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
Password: jmagick
cvs -d :pserver:anonymous@jmagick.yeo.nu:/var/cvs/jmagick checkout Jmagick
也可以直接下載JMagick-5.5.6-X.tar.gz包。
根據(jù)INSTALL文檔指示,編譯如下:
對(duì)下載包:
tar zxvf Jmagick-5.5.6-X.tar.gz
cd Jmagick-5.5.6-X
對(duì)CVS取回來(lái)的源碼
cd JMagick
autoconf
以下為兩種情況都相同的部分
./configure
make all
su
make install
make javadoc
make test <--如果x-win沒(méi)有啟動(dòng),大部分測(cè)試是成功的,但也會(huì)顯示一些錯(cuò)誤信息,因?yàn)闆](méi)法顯示圖片。
tar zxvf Jmagick-5.5.6-X.tar.gz
cd Jmagick-5.5.6-X
對(duì)CVS取回來(lái)的源碼
cd JMagick
autoconf
以下為兩種情況都相同的部分
./configure
make all
su
make install
make javadoc
make test <--如果x-win沒(méi)有啟動(dòng),大部分測(cè)試是成功的,但也會(huì)顯示一些錯(cuò)誤信息,因?yàn)闆](méi)法顯示圖片。
通過(guò)JMagick,實(shí)現(xiàn)JSP上傳圖片文件后生成縮略圖的功能
Jmagick自身帶的Test.java程序,演示了如何使用JMagick來(lái)實(shí)現(xiàn)圖片的復(fù)制、信息獲取、斜角、特效、組合、改變大小、加邊框、旋轉(zhuǎn)、切片、改變格式、去色等等功能,編程的重要參考。
下面主要描述如何實(shí)現(xiàn)將用JSP上傳的圖片,進(jìn)行壓縮生成縮略圖。用jsp上傳文件的全部代碼,參見(jiàn)利用apache-commons-fileupload寫jsp上傳文件,下面只描述圖片壓縮的實(shí)現(xiàn)。
$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);
}
}
}
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包,復(fù)制到$TOMCATHOME/webapps/yourproject/WEB-INF/lib目錄下。
posted on 2011-07-10 10:51 void 閱讀(348) 評(píng)論(0) 編輯 收藏 所屬分類: Jmagick