用戶在注冊網(wǎng)站信息的時候基本上都要數(shù)據(jù)驗證碼驗證。那么圖片驗證碼功能該如何實現(xiàn)呢?
大概步驟是:
1.在內(nèi)存中創(chuàng)建緩存圖片
2.設(shè)置背景色
3.畫邊框
4.寫字母
5.繪制干擾信息
6.圖片輸出
廢話不多說,直接上代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
package com.lsgjzhuwei.servlet.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class VerificationCode */ @WebServlet (asyncSupported = true , urlPatterns = { "/VerificationCode" }) public class VerificationCode extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public VerificationCode() { super (); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub int width = 120 ; int height = 30 ; //創(chuàng)建一張內(nèi)存中的緩存圖片 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); ///背景色 //通過graphics繪制圖像 Graphics graphics = bufferedImage.getGraphics(); //設(shè)置顏色 graphics.setColor(Color.yellow); //填充 graphics.fillRect( 0 , 0 , width, height); ///畫邊框 graphics.setColor(Color.blue); graphics.drawRect( 0 , 0 , width- 1 , height- 1 ); //寫字母 String content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcedfghijklmnopqrstuvwxyz1234567890" ; Random random = new Random(); //設(shè)置字體顏色 graphics.setColor(Color.red); //設(shè)置字體及大小 graphics.setFont( new Font( "宋體" , Font.BOLD, 20 )); int x= 20 ; int y= 20 ; for ( int i = 0 ; i < 4 ; i++) { int index = random.nextInt(content.length()); char letter = content.charAt(index); graphics.drawString(letter+ " " , x, y); x = x+ 20 ; } //繪制干擾線 int x1; int x2; int y1; int y2; graphics.setColor(Color.LIGHT_GRAY); for ( int i = 0 ;i < 50 ;i++) { x1=random.nextInt(width); x2=random.nextInt(width); y1=random.nextInt(height); y2=random.nextInt(height); graphics.drawLine(x1, y1, x2, y2); } //將圖片輸出到瀏覽器 //將內(nèi)存的圖片通過瀏覽器輸出流輸出成jpg圖片 ImageIO.write(bufferedImage, "jpg" , response.getOutputStream()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } |
以上這篇java web中圖片驗證碼功能的簡單實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。