<%@ page contenttype= "image/jpeg" import= "java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!
Color getrandcolor (int fc,int BC) {//given range get random color
Random random = new random ();
if (fc>255) fc=255;
if (bc>255) bc=255;
int R=fc+random.nextint (BC-FC);
int G=fc+random.nextint (BC-FC);
int B=fc+random.nextint (BC-FC);
return new Color (R,G,B);
}
%>
<%
Settings page does not cache
Response.setheader ("Pragma", "No-cache");
Response.setheader ("Cache-control", "No-cache");
Response.setdateheader ("Expires", 0);
Create an image in memory
int width=60, height=20;
BufferedImage image = new BufferedImage (width, height, bufferedimage.type_int_rgb);
Get the graphics context
Graphics g = image.getgraphics ();
Generating random classes
Random random = new random ();
Set Background color
G.setcolor (Getrandcolor (200,250));
G.fillrect (0, 0, width, height);
Set font
G.setfont (New Font ("Times New Roman", font.plain,18));
Draw Border
G.setcolor (New Color (255,255,255));
G.drawrect (0,0,width-1,height-1);
Randomly generates 155 lines of interference so that the authentication code in the image is not easily detected by other programs
G.setcolor (Getrandcolor (160,200));
for (int i=0;i<155;i++)
{
int x = random.nextint (width);
int y = random.nextint (height);
int xl = Random.nextint (12);
int yl = Random.nextint (12);
G.drawline (X,y,x+xl,y+yl);
}
Randomly generated authentication code (4 digits)
String srand= "";
for (int i=0;i<4;i++) {
String rand=string.valueof (Random.nextint (10));
Srand+=rand;
Display the authentication code to the image
G.setcolor (New Color (20+random.nextint, 20+random.nextint), 20+random.nextint (110));
The call function comes out with the same color, possibly because the seed is too close, so it can only be generated directly
g.DrawString (rand,13*i+6,16);
}
Save authentication Code to session
Session.setattribute ("code", SRand);
Image effective
G.dispose ();
Output image to Page
Imageio.write (Image, "JPEG", Response.getoutputstream ());
Out.clear ();
%>
This article from "rendering unchanged Yesterday" blog, reproduced please contact the author!
Java Implementation page Verification code!