类结构
java.lang.Object
|____ java.awt.Image
|____ java.awt.image.BufferedImage
java.lang.Object
|____ java.awt.Graphics
|____ java.awt.Graphics2D
API链接
简介
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();
}
}
}