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