<%@page import="java.awt.image.ImageObserver"%>
<%@page import="java.awt.Image"%>
<%@page import="java.awt.Toolkit"%>
<%@page import="java.awt.Font"%>
<%@page import="java.util.Random"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.awt.Color"%>
<%@page import="java.awt.Graphics"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!private Random rnd = new Random();%>
<%
//设置图片格式
response.setContentType("image/png");
//内存图片
BufferedImage bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
//获取画笔
Graphics g = bi.getGraphics();
//绘制图片
//获取工程所在的根目录
String fileName = application.getRealPath("xx.png");
System.out.println(fileName);
Image img = Toolkit.getDefaultToolkit().getImage(fileName);
g.drawImage(img, 0, 0, 200, 200, null);
//绘图图案
g.setColor(Color.WHITE);//将画笔设置成白色
//g.fillRect(0, 0, 200, 200);//画填充矩形
g.setColor(Color.BLACK);
g.drawRect(1, 1, 198, 198);//画轮廓矩形
//干扰线
int lines = 100;
g.setColor(Color.GRAY);
for (int i = 0; i < lines; i++) {
int x1 = rnd.nextInt(201);
int x2 = rnd.nextInt(201);
int y1 = rnd.nextInt(201);
int y2 = rnd.nextInt(201);
g.drawLine(x1, y1, x2, y2);
}
//生成随机数
String x = "";
for (int i = 0; i < 6; i++) {
x += rnd.nextInt(10);
}
System.out.print(x);
g.setColor(Color.RED);
g.setFont(new Font("黑体", Font.PLAIN, 40));
g.drawString(x, 30, 100);//画文字
//将图片输出到浏览器
ImageIO.write(bi, "png", response.getOutputStream());
//释放资源
g.dispose();
out.clear();
out = pageContext.pushBody();
%>
点击图片刷新验证码
<img width="100px" alt="验证码" src="img.jsp" onclick="this.src='img.jsp?ran='+Math.random();">