天天看點

JSP高清縮略圖JMagick使用

JSP高清縮略圖JMagick使用,實作了對圖檔的多種操作,合成圖檔,縮略圖、複制資料等等...。

首先下載下傳:

http://downloads.jmagick.org/6.3.9/ImageMagick-6.3.9-0-Q16-windows-dll.exe

http://downloads.jmagick.org/6.3.9/jmagick-win-6.3.9-Q16.zip

安裝ImageMagick-6.3.9-0-Q16-windows-dll.exe程式在F盤如:F:/ImageMagick可以自由選擇。然後配置環境Path加入ImageMagick的安裝目錄;F:/ImageMagick。

解壓jmagick-win-6.3.9-Q16.zip,将jmagick-win-6.3.9-Q16.zip裡的jmagick.jar。放到TOMCAT安裝目錄/lib/裡和Java安裝目錄/jdk/jre/lib/ext/裡。再把jmagick.dll 放到TOMCAT安裝目錄/bin/目錄下就ok了。以下是封裝BEAN對圖檔縮放剪切代碼:

Jmagick.java

package Image;

import magick.*;

import java.awt.*;

 

public class Jmagick {

//圖檔縮放
public void Jwh(String URLPath ,String srcImage, String DestImage, int WLen, int HLen){

        MagickImage scaled = null;
        Rectangle rect = null; 

        int x=0;
        int y=0;
        int lw=0;
        int lh=0;
        try{

       ImageInfo info = new ImageInfo(URLPath+srcImage);
       MagickImage image = new MagickImage(info);
     
       //取長寬
       Dimension dim = image.getDimension();
       double wImage = dim.getWidth();
       double hImage = dim.getHeight();

       if (HLen==0) {   //正常縮小  
       Boolean bWBig = wImage > hImage? true:false ;
       if (bWBig) {//長大過高
       hImage = WLen * ( hImage / wImage);
       wImage = WLen;
       } else {//反之
        wImage = WLen * ( wImage / hImage);
        hImage = WLen;
       }

       } else {//剪切縮小
       Boolean bWBig = wImage-WLen < hImage-HLen? true:false ;
       if (bWBig) {//長大過高
       hImage = WLen * ( hImage / wImage);
       wImage = WLen;
       } else {//反之
        wImage = HLen * ( wImage / hImage);
        hImage = HLen;
       }
}

lw=(int)wImage;
lh=(int)hImage;
//輸出
scaled = image.scaleImage(lw, lh);

if (HLen>0) {//剪切縮小必須是JPG格式

        x=(lw-WLen)/2;
        y=(lh-HLen)/2;
        lw=lw-(lw-WLen);
        lh=lh-(lh-HLen);

        rect = new Rectangle(x, y, lw, lh);   
        scaled = scaled.cropImage(rect);  
}

 

       scaled.setFileName(URLPath+DestImage);  
       scaled.writeImage(info); 
       scaled.destroyImages();
       }catch(MagickApiException ex){

       }catch(MagickException ex){

       } finally {   
                 scaled.destroyImages();
       }   
    }

}
           

編譯後Jmagick.class放在/WEB-INF/classes/Image/檔案夾下

使用方式:

String Path="/1.gif";
String PathS="/12.gif";
int Ww=100;
int Hh=0;

//設定Hh高度為0的時候是按圖檔的寬度比例縮放圖檔,設定圖檔Hh大于0以上就按指定大小圖檔比例剪切為不變形的縮放圖檔。
Image.Jmagick   Jmagick=new   Image.Jmagick();
Jmagick.Jwh(getServletContext().getRealPath("/"),Path,PathS,Ww,Hh);