天天看點

java高品質縮略圖生成方法,Jmagick使用1

現在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