java为我们提供了画图的Graphics和Graphics2D,下面来用java画随机中文验证码图片
package cn.xiaotao;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class VerificationCode extends HttpServlet {
public static final int WIDTH = 120;
public static final int HEIGHT = 35;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//1、设置背景颜色
setBackGround(g);
//2、设置边框
setBorder(g);
//3、画干扰线
drawRandomLine(g);
//4、写随机数
drawRandomNum((Graphics2D)g);
//5、图形写给浏览器
response.setContentType("image/jpeg");
//以下三个头通知所有浏览器不要缓存
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
//将图片输出到浏览器
ImageIO.write(image, "jpg", response.getOutputStream());
}
private void setBackGround(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, WIDTH, HEIGHT);
}
private void setBorder(Graphics g) {
g.setColor(Color.BLUE);
g.drawRect(1, 1, WIDTH-2, HEIGHT-2);
}
private void drawRandomLine(Graphics g) {
g.setColor(Color.GREEN);
for(int i=0;i<5;i++){
int x1 = new Random().nextInt(WIDTH);
int y1 = new Random().nextInt(HEIGHT);
int x2 = new Random().nextInt(WIDTH);
int y2 = new Random().nextInt(HEIGHT);
g.drawLine(x1, y1, x2, y2);
}
}
//Graphics2D里面有设置字体旋转的方法,但是Graphics里面没有这个方法,所以这里用的Graphics2D
private void drawRandomNum(Graphics2D g) {
g.setColor(Color.red);
g.setFont(new Font("宋体",Font.BOLD,20));
String base = " \u4e00\u4e59\u4e8c\u5341\u4e01\u5382\u4e03\u535c\u516b\u4eba\u5165\u513f\u4e5d\u51e0\u4e86\u4e43\u5200\u529b\u53c8\u4e09\u5e72\u4e8e\u4e8f\u58eb\u571f\u5de5\u624d\u4e0b\u5bf8\u4e08\u5927\u4e0e\u4e07\u4e0a\u5c0f\u53e3\u5c71\u5dfe\u5343\u4e5e\u5ddd\u4ebf\u4e2a\u4e48\u4e45\u52fa\u4e38\u5915\u51e1\u53ca\u5e7f\u4ea1\u95e8\u4e49\u4e4b\u5c38\u5df2\u5f13\u5df1\u536b\u5b50\u4e5f\u5973\u98de\u5203\u4e60\u53c9\u9a6c\u4e61\u4e30\u738b\u4e95\u5f00\u592b\u5929\u5143\u65e0\u4e91\u4e13\u624e\u827a\u6728\u4e94\u652f\u5385\u4e0d\u592a\u72ac\u533a\u5386\u53cb\u5c24\u5339\u8f66\u5de8\u7259\u5c6f\u6bd4\u4e92\u5207\u74e6\u6b62\u5c11\u65e5\u4e2d\u8d1d\u5185\u6c34\u5188\u89c1\u624b\u5348\u725b\u6bdb\u6c14\u5347\u957f\u4ec1\u4ec0\u7247\u4ec6\u5316\u4ec7\u5e01\u4ecd\u4ec5\u65a4\u722a\u53cd\u4ecb\u7236\u4ece\u4eca\u51f6\u5206\u4e4f\u516c\u4ed3\u6708\u6c0f\u52ff\u98ce\u6b20\u4e39\u5300\u4e4c\u52fe\u51e4\u516d\u6587\u65b9\u706b\u4e3a\u6597\u5fc6\u8ba1\u8ba2\u6237\u8ba4\u5fc3\u5c3a\u5f15\u4e11\u5df4\u5b54\u961f\u529e\u4ee5\u5141\u4e88\u529d\u53cc\u4e66\u5e7b\u7389\u520a\u672b\u672a\u793a\u51fb\u6253\u5de7\u6b63\u6251\u6252\u529f\u6254\u53bb\u7518\u4e16\u53e4\u8282\u672c\u672f\u53ef\u4e19\u5de6\u5389\u77f3\u53f3\u5e03\u9f99\u5e73\u706d\u8f67\u4e1c\u5361\u5317\u5360\u4e1a\u65e7\u5e05\u5f52\u76ee\u65e6\u4e14\u53ee\u53f6\u7532\u7533\u53f7\u7535\u7530\u7531\u53ea\u592e\u53f2\u5144\u53fc\u53eb\u53e8\u53e6\u53f9\u56db\u751f\u5931\u79be\u4e18\u4ed8\u4ed7\u4ee3\u4ed9\u4eec\u4eea\u767d\u4ed4\u4ed6\u65a5\u74dc\u4e4e\u4e1b\u4ee4\u7528\u7529\u5370\u4e50\u53e5\u5306\u518c\u72af\u5916\u5904\u51ac\u9e1f\u52a1\u5305\u9965\u4e3b\u5e02\u7acb\u95ea\u5170\u534a\u6c41\u6c47\u5934\u6c49\u5b81\u7a74\u5b83\u8ba8\u5199\u8ba9\u793c\u8bad\u5fc5\u8bae\u8baf\u8bb0\u6c38\u53f8\u5c3c\u6c11\u51fa\u8fbd\u5976\u5974\u52a0\u53ec\u76ae\u8fb9\u5b55\u53d1\u5723\u5bf9\u53f0\u77db\u7ea0\u6bcd\u5e7c\u4e1d\u5f0f\u5211\u52a8\u625b\u5bfa\u5409\u6263\u8003\u6258\u8001\u573e\u5de9\u6267\u6269\u626b\u5730\u626c\u573a\u8033\u5171\u8292\u4e9a\u829d\u673d\u6734\u673a\u6743\u8fc7\u81e3\u518d\u534f\u897f\u538b\u538c\u5728\u767e\u6709\u5b58\u800c\u9875\u5320\u5938\u593a\u7070\u8fbe\u5217\u6b7b\u6210\u5939\u8f68\u90aa\u5212\u8fc8\u6bd5\u81f3\u6b64\u8d1e\u5e08\u5c18\u5c16\u52a3\u5149\u5f53\u65e9\u5410\u5413\u866b\u66f2\u56e2\u540c\u540a\u5403\u56e0\u5438\u5417\u5c7f\u5e06\u5c81\u56de\u5c82\u5219\u521a\u7f51\u8089\u5e74\u6731\u5148\u4e22\u820c\u7af9\u8fc1\u4e54\u4f1f\u4f20\u4e52\u4e53\u4f11\u4f0d\u4f0f\u4f18\u4f10\u5ef6\u4ef6\u4efb\u4f24\u4ef7\u4efd\u534e\u4ef0\u4eff\u4f19\u4f2a\u81ea\u8840\u5411\u4f3c\u540e\u884c\u821f\u5168\u4f1a\u6740\u5408\u5146\u4f01\u4f17\u7237\u4f1e\u521b\u808c\u6735\u6742\u5371\u65ec\u65e8\u8d1f\u5404\u540d\u591a\u4e89\u8272\u58ee\u51b2\u51b0\u5e84\u5e86\u4ea6\u5218\u9f50\u4ea4\u6b21\u8863\u4ea7\u51b3\u5145\u5984\u95ed\u95ee\u95ef\u7f8a\u5e76\