void

          JMagick

          JMagick是一個開源API,利用JNI(Java Native Interface)技術(shù)實現(xiàn)了對ImageMagickAPI的Java訪問接口,因此也將比純Java實現(xiàn)的圖片操作函數(shù)在速度上要快。JMagick只實現(xiàn)了ImageMagicAPI的一部分功能,它的發(fā)行遵循LGPL協(xié)議
          ImageMagick請參考其官方網(wǎng)站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上開發(fā),但運行好象不用那么高,我用的是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包。
          根據(jù)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,實現(xiàn)JSP上傳圖片文件后生成縮略圖的功能


            Jmagick自身帶的Test.java程序,演示了如何使用JMagick來實現(xiàn)圖片的復制、信息獲取、斜角、特效、組合、改變大小、加邊框、旋轉(zhuǎn)、切片、改變格式、去色等等功能,編程的重要參考。
            下面主要描述如何實現(xiàn)將用JSP上傳的圖片,進行壓縮生成縮略圖。用jsp上傳文件的全部代碼,參見利用apache-commons-fileupload寫jsp上傳文件,下面只描述圖片壓縮的實現(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(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 閱讀(347) 評論(0)  編輯  收藏 所屬分類: Jmagick

          My Links

          Blog Stats

          隨筆分類

          最新評論

          主站蜘蛛池模板: 华坪县| 县级市| 固镇县| 襄樊市| 荆州市| 临安市| 图木舒克市| 乐昌市| 巍山| 永吉县| 海兴县| 临沂市| 新野县| 和平县| 小金县| 武胜县| 滨州市| 泰安市| 晋中市| 湟中县| 泌阳县| 大余县| 津南区| 祁连县| 临朐县| 黑山县| 惠水县| 邢台县| 武城县| 元氏县| 六安市| 瓮安县| 芦溪县| 平利县| 张北县| 东阳市| 靖安县| 常山县| 连城县| 太湖县| 武义县|