有时候我们为了让用户快速预览所有图片,在上传图片时同时生产缩略图。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
参考文章: