java文字生成图片

时间:2021-10-05 11:22:11
    1.应用一  
//测试生成图片
public void test01(){
int width = 100;
int height = 100;
String s = "你好";

File file = new File("D:/image.jpg");

Font font = new Font("Serif", Font.BOLD, 10);
//创建一个画布
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//获取画布的画笔
Graphics2D g2 = (Graphics2D)bi.getGraphics();

//开始绘图
g2.setBackground(Color.WHITE);
g2.clearRect(0, 0, width, height);
g2.setPaint(new Color(0,0,255));
g2.fillRect(0, 0, 100, 10);
g2.setPaint(new Color(253,2,0));
g2.fillRect(0, 10, 100, 10);
g2.setPaint(Color.red);


FontRenderContext context = g2.getFontRenderContext();
Rectangle2D bounds = font.getStringBounds(s, context);
double x = (width - bounds.getWidth()) / 2;
double y = (height - bounds.getHeight()) / 2;
double ascent = -bounds.getY();
double baseY = y + ascent;

//绘制字符串
g2.drawString(s, (int)x, (int)baseY);

try {
//将生成的图片保存为jpg格式的文件。ImageIO支持jpg、png、gif等格式
ImageIO.write(bi, "jpg", file);
} catch (IOException e) {
System.out.println("生成图片出错........");
e.printStackTrace();
}

}
2.应用二:生成背景透明的图片  首先jpg格式的图片,支持RGB,无法实现背景透明  png与gif支持RGB和alpha属性,可以生成透明图片   int width = 400;  int height = 300;   // 创建BufferedImage对象  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  // 获取Graphics2D  Graphics2D g2d = image.createGraphics();   // ---------- 增加下面的代码使得背景透明 -----------------  image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);  g2d.dispose();  g2d = image.createGraphics();  // ---------- 背景透明代码结束 -----------------    // 画图  g2d.setColor(new Color(255,0,0));  g2d.setStroke(new BasicStroke(1));  g2d.draw  //释放对象  g2d.dispose();  // 保存文件   ImageIO.write(image, "png", new File("c:/test.png"));