Posted on 2009-04-09 11:51
帥子 閱讀(263)
評論(0) 編輯 收藏 所屬分類:
j2se技術專區 、
申請加入java團隊
<%@?page?contentType="image/jpeg"?import="java.awt.*,?
java.awt.image.*,java.util.*,javax.imageio.*"?%>?
<%?
//?在內存中創建圖象?
int?width=60,?height=20;?
BufferedImage?image?=?new?BufferedImage(width,?height,?
BufferedImage.TYPE_INT_RGB);?
//?獲取圖形上下文?
Graphics?g?=?image.getGraphics();?
//?設定背景色?
g.setColor(new?Color(0xDCDCDC));?
g.fillRect(0,?0,?width,?height);?
//畫邊框?
g.setColor(Color.black);?
g.drawRect(0,0,width-1,height-1);?
//?取隨機產生的認證碼(4位數字)?
String?rand?=?request.getParameter("rand");?
rand?=?rand.substring(0,rand.indexOf("."));?
switch(rand.length())?
{?
case?1:?rand?=?"000"+rand;?break;?
case?2:?rand?=?"00"+rand;?break;?
case?3:?rand?=?"0"+rand;?break;?
default:?rand?=?rand.substring(0,4);?break;?
}?
//?將認證碼存入SESSION?
session.setAttribute("rand",rand);?
//?將認證碼顯示到圖象中?
g.setColor(Color.black);?
Integer?tempNumber?=?new?Integer(rand);?
String?numberStr?=?tempNumber.toString();?
g.setFont(new?Font("Atlantic?Inline",Font.PLAIN,18));?
String?Str?=?numberStr.substring(0,1);?
g.drawString(Str,8,17);?
Str?=?numberStr.substring(1,2);?
g.drawString(Str,20,15);?
Str?=?numberStr.substring(2,3);?
g.drawString(Str,35,18);?
Str?=?numberStr.substring(3,4);?
g.drawString(Str,45,15);?
//?隨機產生88個干擾點,使圖象中的認證碼不易被其它程序探測到?
Random?random?=?new?Random();?
for?(int?i=0;i<20;i++)?
{?
int?x?=?random.nextInt(width);?
int?y?=?random.nextInt(height);?
g.drawOval(x,y,0,0);?
}?
//?圖象生效?
g.dispose();?
//?輸出圖象到頁面?
ImageIO.write(image,?"JPEG",?response.getOutputStream());?
%>