天天看点

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