java使用jmagick生成高质量缩略图...
时间:2010-08-10 来源:yanm7788
使用JMagick时得下载ImageMagick.
ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。现在,ImageMagic的主要精力集中在性能、减少bug以及提供稳定的API和ABI上。(抄自百度)
下载地址为:http://downloads.jmagick.org/
我使用的版本是6.39,先下载安装 ImageMagick-6.3.9-0-Q16-windows-dll.exe,安装目录下(按自己所安装的目录找) 下的所有dll文件 copy 到系统盘下的 “C:\WINDOWS\system32\”文件夹里.
再下载对应的JMagick jmagick-win-6.3.9-Q16.zip 解压 jmagick.dll 复制到系统盘下的 “C:\WINDOWS\system32\”文件夹里; jmagick.jar 复制到Tomcat下的lib文件夹里 或 所使用项目的WEB-INF下lib文件里
做了以上配置就可以使用了.一个简单的创建缩略图代码
import java.awt.Dimension; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import javax.imageio.ImageIO; import magick.CompositeOperator; import magick.CompressionType; import magick.DrawInfo; import magick.ImageInfo; import magick.MagickException; import magick.MagickImage; import magick.PixelPacket; import magick.PreviewType; public class ImageUtil2 { static { // 不能漏掉这个,不然jmagick.jar的路径找不到 System.setProperty("jmagick.systemclassloader", "no"); } /** * 压缩图片 * * @param filePath 源文件路径 * @param toPath 缩略图路径 */ public void createImage(String filePath,String toPath, int width, int height) { ImageInfo info = null; MagickImage image = null; MagickImage scaled = null; try { info = new ImageInfo(filePath); image = new MagickImage(info); scaled = image.scaleImage(width, height);// 小图片文件的大小. scaled.setFileName(rootPath+toPath); scaled.writeImage(info); } catch (Exception e) { e.printStackTrace(); } finally { if(image!=null) { image.destroyImages(); } if (scaled != null) { scaled.destroyImages(); } } } public static void main(String[] args) { createImage("D:\\1012.jpg", "D:\\1012_th.jpg", 110,100); // System.out.println(isUpdateBigPic("D:\\test\\11.jpg")); } }