複製程式碼如下:
套件xwcms.net.service;
導入java.awt.Color;
導入java.awt.Font;
導入java.awt.Graphics;
導入 java.awt.Graphics2D;
導入java.awt.image.BufferedImage;
導入java.io.IOException;
導入 java.util.Random;
導入 javax.imageio.ImageIO;
導入 javax.servlet.ServletException;
導入 javax.servlet.http.HttpServlet;
導入 javax.servlet.http.HttpServletRequest;
導入 javax.servlet.http.HttpServletResponse;
/**
* 產生隨機漢字
*
* @author xw素材網提供
*
*/
公共類別 DrawImage 擴充 HttpServlet {
公共靜態最終 int WIDTH = 120;
公共靜態最終 int HEIGHT = 30;
public void doGet(HttpServletRequest 請求,HttpServletResponse 回應)
拋出 ServletException、IOException {
this.doPost(請求,回應);
}
公共無效doPost(HttpServletRequest請求,HttpServletResponse回應)
拋出 ServletException、IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 建立快取
BufferedImage bi = 新的 BufferedImage(寬度, 高度,
BufferedImage.TYPE_INT_RGB);
// 獲得收益
圖形 g = bi.getGraphics();
//設定背影顏色
設定背景(g);
// 熟悉
設定邊框(g);
// 畫幹擾線
繪製隨機線(g);
// 寫隨機數
字串隨機 = drawRandomNum((Graphics2D) g);
// 將隨機漢字存在session中
request.getSession().setAttribute("校驗碼", 隨機);
// 將圖形寫給瀏覽器
響應.setContentType(“圖像/jpeg”);
// 發頭控制瀏覽器不要快取
response.setDateHeader("expries", -1);
response.setHeader("快取控制", "無快取");
response.setHeader("Pragma", "無快取");
// 將圖片寫給瀏覽器
ImageIO.write(bi, "jpg", response.getOutputStream());
}
/**
* 設定背景色
*
* @參數g
*/
私人無效setBackGround(圖形g){
// 設定顏色
g.setColor(Color.WHITE);
// 填滿區域
g.fillRect(0, 0, 寬度, 高度);
}
/**
* 認識
*
* @參數g
*/
私人無效setBorder(圖形g){
// 設定熟悉的顏色
g.setColor(Color.BLUE);
// 未知區域
g.drawRect(1, 1, 寬度 - 2, 高度 - 2);
}
/**
* 繪製隨機線條
*
* @參數g
*/
私人無效drawRandomLine(圖形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);
}
}
/**
* 畫隨機漢字
*
* @參數g
* @返回
*/
私有字串drawRandomNum(Graphics2D g){
StringBuffer sb = new StringBuffer();
// 設定顏色
g.setColor(Color.RED);
// 設定字體
g.setFont(new Font("宋體", Font.BOLD, 20));
// 準備常用漢字集
字串基底=“/u7684/u4e00/u4e86/u662f/u6211/u4e0d/u5728/u4eba/u4eec/u6709/u6765/u4ed6/u8fd9/u4e0a/u27407/ 8bf4/u5c31/ u53bb /u59 1a/u6ca1/u4e3a/u53c8 /u53ef /u5bb6/u5b66/u53ea/u4ee5/u4e3b/u4f1a/u6837/u5e74/u60f3/u751f/u540c/u8001/u4e2d/u5341/u000252/u 3/u5b83/u 540e/u7136/ u8d70/u5f88 71/u6c11/ u5019/u7ecf/ u53d1/u5de5 u6218/u4e 8c/u95ee/u4f46 /u8eab/u65b9 0/u5149/u4ea 7/u60c5/ u8def/u5206/u603b 5199/u519b/u542 7/u6587 /u8fd0/u518d/u679c /u600e/u5b9a/u8bb8/u5feb/u660e/u884c/u56e0/u522b/u98de/u5916/u6811/u7269/u6850 39/u671b/u65b0/u5e2 6/ u961f/u5148/u529b/u5b8c /u5374/u7ad9/u4ee3/u5458/u673a/u66f4/u4e5d/u60a8/u6bcf/u98ce/u7ea7/udd/u7575/u 6f4/u610f/u591c/u6bd4/ u9 636/u8fde/u8f66/u91cd /u4fbf/u6597/u9a6c/u54ea/u5316/u592a/u6307/u53d8/u793e/u4f3c/u58/u80075757/u 767e/u539f/u62ff/u7fa4 /u 7a76/u5404/u516d/u672c /u601d/u89e3/u7acb/u6cb3/u6751/u516b/u96be/u65e9/u8bba/u5417/u6839u96be/u65e9/u8bba/u5417/u6839u/u 6/u4e66/u5750/u63a5/ u5e94/ u5173/u4fe1/u89c9/u6b65 /u53cd/u5904/u8bb0/u5c06/u5343/u627e/u4e89/u9886/u6216/u5e08/u 5b57/u52a0/u811a/u7d27/ u7231 /u7b49/u4e60/u9635/u6015 /u6708/u9752/u534a/u706b/u6cd5/u9898/u5efa/u8d76/u4f4d/u5531/u67531u /u51c6/u5f20/u56e2/u5c4b/ u79bb/ u8272/u8138/u7247/u79d1 /u5012/u775b/u5229/u4e16/u521a/u4e14/u7531/u9001/u5207/u6610u /u54cd/u96ea/u6d41/u672a/ u573 a/u8be5/u5e76/u5e95/u6df1 /u523b/u5e73/u4f1f/u5fd9/u63d0/u786e/u8fd1/u4eae/u8f7b/u8bb2/u510002/u00 540d/u5440/u571f/u6e05 /u963 3/u7167/u529e/u53f2/u6539 /u5386/u8f6c/u753b/u9020/u5634/u6b64/u6cbb/u5317/u5fc5/u670 4f20/u4e1a/u83dc/u722c/ u7761/u517 4/u5f62/u91cf/u54b1/u89c2 /u82e6/u4f53/u4f17/u901a/u51b2/u5408/u7834/u53cb/u51b2/u5408/u7834/u53cb/u51b2/u5408/u7834/u53cb/1536 6781/u5357/u67aa/ u8bfb/u6c99/u5c81/u7 ebf/u91ce/u575a/u7a7a/u6536 /u7b97/u81f3/u653f/u57ce/u52b3/u843d/u94b1/u7750752/u 5c55/u5305/u6b4c/u7c7b /u6e10/u5f3a/u6570/u4e6 1/u547c/u6027/u97f3/u7b54 /u54e5/u9645/u65e7/u795e/u5ea7/u7ae0/u526u/ e/u4f55/u725b/u53d6/ u5165/u5cb8/u6562/u6389/u5ffd/ u79cd/u88c5/u9876/u6025 /u6797/u505c/u606f/u53e5/u533a/u8863/u6853/u53e5/u533a/u 4/u80cc/u7ec6”;
整數x=5;
// 控製字數
for (int i = 0; i < 4; i++) {
//設定字體旋轉角度
int 度 = new Random().nextInt() % 30;
// 截取漢字
String ch = base.charAt(new Random().nextInt(base.length())) + "";
sb.append(ch);
// 正向角度
g.旋轉(度數 * Math.PI / 180, x, 20);
g.drawString(ch, x, 20);
// 反向角度
g.rotate(-度 * Math.PI / 180, x, 20);
x+=30;
}
返回 sb.toString();
}
}