BufferedImage&Graphics2D简谈

xiaoxiao2021-02-28  36

类结构

java.lang.Object |____ java.awt.Image |____ java.awt.image.BufferedImage java.lang.Object |____ java.awt.Graphics |____ java.awt.Graphics2D

API链接

BufferedImage Graphics2D

简介

public class BufferedImage extends Image implements WritableRenderedImage, Transparency

BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。BufferedImage 由图像数据的 ColorModel 和 Raster 组成。Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角坐标都为 (0, 0)。因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。 此类依靠 Raster 的数据获取方法、数据设置方法,以及 ColorModel 的颜色特征化方法。

public abstract class Graphics2D extends Graphics

此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。

具体实现

import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.ImageIcon; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class Test2 { /** * @param args */ public static void main(String[] args) { ImageIcon vmImageIcon = new ImageIcon("D:/jpg/template.jpg"); Image image = vmImageIcon.getImage(); int width = image.getWidth(null); int height = image.getHeight(null); BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2d = bufferedImage.createGraphics(); graphics2d.drawImage(image, 0, 0, null); graphics2d.setColor(Color.BLACK); graphics2d.setFont(new Font(null, Font.ITALIC, 30)); graphics2d.drawString("123", 680, 200); graphics2d.dispose(); try { FileOutputStream outPic = new FileOutputStream("D:/jpg/done.jpg"); JPEGImageEncoder imageEncoder = JPEGCodec.createJPEGEncoder(outPic); imageEncoder.encode(bufferedImage); outPic.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ImageFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
转载请注明原文地址: https://www.6miu.com/read-600313.html

最新回复(0)