java实现生成缩略图

有时候我们为了让用户快速预览所有图片,在上传图片时同时生产缩略图。java可以使用Graphics2D绘制出缩略图。

代码如下:

package cn.slimsmart.java.demo.image;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;

/**
 * 生成缩略图
 */
public class PicZoom {

	private static final int WIDTH = 50; // 缩略图宽度
	private static final int HEIGHT = 50;// 缩略图高度

	public static BufferedImage zoom(String srcFileName) {
		// 使用源图像文件名创建ImageIcon对象。
		ImageIcon imgIcon = new ImageIcon(srcFileName);
		// 得到Image对象。
		Image img = imgIcon.getImage();
		return zoom(img);
	}

	public static BufferedImage zoom(Image srcImage) {
		// 构造一个预定义的图像类型的BufferedImage对象。
		BufferedImage buffImg = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
		// buffImg.flush();
		// 创建Graphics2D对象,用于在BufferedImage对象上绘图。
		Graphics2D g = buffImg.createGraphics();
		// 设置图形上下文的当前颜色为白色。
		g.setColor(Color.WHITE);
		// 用图形上下文的当前颜色填充指定的矩形区域。
		g.fillRect(0, 0, WIDTH, HEIGHT);
		// 按照缩放的大小在BufferedImage对象上绘制原始图像。
		g.drawImage(srcImage, 0, 0, WIDTH, HEIGHT, null);
		// 释放图形上下文使用的系统资源。
		g.dispose();
		// 刷新此 Image 对象正在使用的所有可重构的资源.
		srcImage.flush();
		return buffImg;
	}
}
测试代码:

BufferedImage img = PicZoom.zoom("src/main/resources/123.png");
		ImageIO.write(img, "png", new File("src/main/resources/123_thumbnails.png"));
注: 有关 ImageIO使用参考: http://www.360doc.com/content/14/0418/09/14416931_369953357.shtml

参考文章:

1.java ImageIO处理图像的封装

你可能感兴趣的:(java)