生成图片
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='#'" ?
? ? ? ? ?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"));