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