0
回答
生成高品质缩略图,jmagick使用指南

现在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(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);
              }
    }

 

举报
红薯
发帖于9年前 0回/3K+阅
顶部