現在web應用經常會用到縮略圖。然後一旦生成的縮略圖小于100px * 100px,一些常用的java包,生成的圖檔确實有點慘不忍睹。 現在介紹使用Jmagick的使用,可以生成品質很好的縮略圖,當然還有其他很多圖像處理的方法。 首先jmagick(http://www.yeo.id.au/jmagick/)是ImageMagick(http://www.imagemagick.org/)的java 應用的接口。是以要先安裝ImageMagick應用程式,你的java應用才能使用,在首頁上你可以輕松找到下載下傳的連結。 1。下載下傳jmagick,imagemagick 2.安裝ImageMagick,網站上有安裝方法(windows,unnix),我隻在win上做了安裝,安裝以後把安裝目錄下所有的dll檔案copy到windows/system32/目錄下。 3。下載下傳的jmagick包含jmagick.jar,jmagick.dll檔案,jmagick.dll需要copy到windows/system32/目錄下。 4。web應用如果部署到tomcat下,那麼最好在catalina.bat檔案中改變如下設定 set JAVA_OPTS=%JAVA_OPTS% -Xms256M -Xmx768M -XX:MaxPermSize=128M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="${catalina.base}/conf/logging.properties" 避免heap溢出的問題,參數看你自己的機器而定。( -Xms256M -Xmx768M -XX:MaxPermSize=128M ) 5。還要注意如果部署到web應用,你在使用的class裡面需要 System.setProperty("jmagick.systemclassloader","no"); 要不然會報出UnsatisfiedLinkError: no JMagick in java.library.path. 執行個體如下: 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, 86);//小圖檔檔案的大小. scaled.setFileName(picTo); scaled.writeImage(info); } catch(MagickApiException ex) { } catch(MagickException ex) { } } 注:linux系統下,需要下載下傳另外的包 public void resize(int w, int h) throws IOException { try { // Resize System.setProperty("jmagick.systemclassloader","no"); ImageInfo info = new ImageInfo(sourceFileName); MagickImage image = new MagickImage(info); MagickImage scaled = image.scaleImage(w, h);//小圖檔檔案的大小. scaled.setFileName(destFile); scaled.writeImage(info); } catch(MagickApiException ex) { System.out.println(ex); } catch(MagickException ex) { System.out.println(ex); } } Top