# 1. 图像处理
# 关键类
- 图形:Graph
- java.awt 包
- Java 2D 库: Graphics2D, Line2D, Rectangle2D, Ellipse2D,Arc2D
- Color, Stroke
- 图像:Image
- javax.imageio 包
- ImageIO, BufferedImage, ImageReader, ImageWriter
# 关键类描述
Java 原生支持 jpg, png, bmp, wbmp, gif
- javax.imageio.ImageIO
- 自动封装多种 ImageReader 和 ImageWriter,读写图像文件
- read 读取图片 write 写图片
- java.awt.image.BufferedImage, 图像在内存中的表示类
- getHeight 获取高度
- getWidth 获取宽度
- 图像文件读写 / 截取 / 合并
# 图片读写
| |
| BufferedImage image = ImageIO.read(new File("c:/temp/ecnu.jpg")); |
| |
| |
| Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg"); |
| ImageReader reader = (ImageReader) readers.next(); |
| ImageInputStream iis = ImageIO.createImageInputStream(new File("c:/temp/ecnu.jpg")); |
| reader.setInput(iis, true); |
| |
| |
| ImageIO.write(image, "png", new File("c:/temp/ecnu.png")); |
# 获取基础属性
| System.out.println("Height: " + image.getHeight()); |
| System.out.println("Width: " + image.getWidth()); |
# 图像切割
| |
| ImageReadParam param = reader.getDefaultReadParam(); |
| Rectangle rect = new Rectangle(x, y, width, height); |
| param.setSourceRegion(rect); |
| |
| |
| BufferedImage bi = reader.read(0, param); |
# RGB
| |
| int[] firstRGB = new int[width1*height1]; |
| firstRGB = imageOne.getRGB(0,0,width1,height1,firstRGB,0,width1); |
| |
| |
| imageNew.setRGB(0,0,width1,height1,firstRGB,0,width1); |
# 统计图生成
- 统计图
- 柱状图 / 饼图 / 折线图
- Java 原生的 Graphics 2D 可以画,比较繁琐
- 基于 jFreeChart (www.jfree.org/jfreechart) 可以快速实现统计图生成
- 设定数据集
- 调用 ChartFactory 生成图形