การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.sanrong;
นำเข้า 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;
-
* สร้างรหัสการยืนยันรูปภาพ
* ใช้ API --- bufferedImage
* @author SSA
-
Public Class Test4Pic ขยาย httpservlet {
// กำหนดความยาวและความกว้างของค่าคงที่
ความกว้าง int สุดท้ายคงที่ส่วนตัว = 130;
ความสูง int สุดท้ายคงที่ส่วนตัว = 30;
โมฆะสาธารณะ DOGET (คำขอ HTTPSERVLETREQUEST, การตอบสนอง httpservletResponse)
โยน servletexception, ioexception {
// รับคอนเทนเนอร์พื้นหลังวิธีนี้ส่งคืนกราฟิก 2D แต่อยู่ที่นี่เพื่อความเข้ากันได้ย้อนหลัง
BufferedImage Image = New BufferedImage (ความกว้าง, ความสูง, bufferedImage.type_int_rgb);
// สร้างกราฟิก 2D ซึ่งสามารถใช้ในการวาดลงใน bufferedImage นี้
กราฟิกกราฟิก = image.getGraphics ();
// ตั้งค่าพื้นหลัง
Fetbackground (กราฟิก);
// ตั้งเส้นขอบ
SetBorder (กราฟิก);
// วาดเส้นสุ่ม
Drawrandomline (กราฟิก);
// วาดหมายเลขสุ่ม
DrawRandomNum ((กราฟิก 2D) กราฟิก);
// แจ้งว่าเบราว์เซอร์ส่งคืนภาพเพื่อให้ประเภท memetype เป็นแบบสอบถามในการกำหนดค่า Tomcat
Response.SetContentType ("Image/JPEG");
Imageio.write (รูปภาพ, "jpg", response.getOutputStream ());
-
โมฆะส่วนตัว DrawRandomNum (กราฟิกกราฟิก 2D) {
// เขียนหมายเลขสุ่ม
graphics.setColor (color.blue);
graphics.setFont (ตัวอักษรใหม่ ("宋体", font.bold, 20));
// แต่มีคำที่หายากมากมายในนั้นซึ่งจำเป็นต้องกรองและเลือกภาษาจีนทั่วไป
สาย base = "/u7684/u4e00/u4e86/u662f/u6211/u4e0d/u5728/u4eba/u4eec/u6707 5C31/U53BB/ U5B50/U5F97/U4E5F/U548C/U90A3/U8981/U 4E0B/U770B/U5929/U65F6/U8FC7/U51FA/U5C0F/U4E48/U8D77/U4F60/U90/u53a/u53a/u53a U53EA/U4EE5/U4E3B/U4F1A/ U6837/U5E74/U60F3/U751F/U540C/U800 1/U4E2D/U5341/U4ECE/U81EA/U9762/U524D/U5934/U9053/U5B83 /U6210/U56DE/U4EC0/ U8FB9/U4F5C/U5BF9/U5F00/U800C/U5DF1/U 4e9b/u73b0/u5c71/u6c11/u5019/u7ecf/u53d1/u5de5/u5411/u4e8b/u547d/u58f0/u58f0 /U7406/U773C/U5FD7/ U70B9/U5FC3/U6218/U4E8C/U95EE/U4F4 6/u8eab/u65b9/u5b9e/u5403/u505a/u53eb/u5f53/u4f4f/u542c/u9769/u 6253/u54626262626262 /U5149/U4EA7/U60C5/ U8DEF/U5206/U603B/U6761/U767D/U8BDD/ u4e1c/u5e2d/u6b21/u4eb2/u5982/u88ab/u82b1/u53e3/u653e/u513f/u52522525252525 /U679C/U600E/U5B9A/U8BB8/ U5FEB/U660E/U884C/U56E0/U522B/U98 DE/U5916/U6811/U7269/U6D3B/U90E8/U95E8/U65E0/U5F80/U8239 /U66F4/U4E5D/U60A8/ u6bcf/u98ce/u7ea7/u8ddf/u7b11/u554a/ U5B69/U4E07/U5C11/U76F4/U610F/U591C/U6BD4/U9636/U8FDE/U8F66/U91C 8EB/U8005/U5E72/U77F3/ U6EE1/U65E5/U51B3/U767E/U539F/U62 FF/U7FA4/U7A76/U5404/U516D/U672C/U601D/U89E3/U7ACB/U6CB3/U6751/U516B/U96BE/U65E9 ECA/U5176/U4E66/U5750/ U63A5/U5E94/U5173/U4FE1/U89C9/U6B65 /U53CD/U5904/U8BB0/U5C06/U5343/U627E/U4E89/U9886/U6216/U5E08/U7223201A/U521A/U8B53 /U7B49/U4E60/U9635/U6015 /U6708/U9752/U534A/U706B/U6CD5/U9 898/U5EFA/U8D76/U4F4D/U5531/U6D77/U4E03/U5973/U4EFB/U4EF6/U611F/U51C6/U5F20/U56E2/U5C4B/U79BB/U8272/U8272 /u5229/u4e16/u521a/ U4E14/U7531/U9001/U5207/U661F/U5BFC /U665A/U8868/U591F/U6574/U8BA4/U54CD/U96EA/U6D41/U672A/U573A/U8 /u4eae/u8f7b/u8bb2/u519c /U53E4/U9ED1/U544A/U754C/U62C9/U5 40d/U5440/U571F/U6E05/U9633/U7167/U529E/U53F2/U6539/U5386/U8F6C/U753B/U9020/U5634/U6B64/U6CBB/U5317 5185/U8BC6/U9A8C/U4F20/ U4E1A/U83DC/U722C/U7761/U5174/U5F6 2/u91cf/u54b1/u89c2/u82e6/u4f53/u4f17/u901a/u51b2/u5408/u7834/u653f/u653f FB/U6C99/U5C81/U7EBF/ u91ce/u575a/u7a7a/u6536/u7b97/u81f3/u 653f/u57ce/u52b3/u843d/u94b1/u7279/u56f4/u5f1f/u80dc/u6559/u70ed/u5c55/u5305/u6b4c/u7c7b/u6e10 7F3/U7B54/U54E5/U9645/ U65E7/U795E/U5EA7/U7AE0/U5E2E/U556 6/U53D7/U7CFB/U4EE4/U8DF3/U975E/U4F55/U725B/U53D6/U5165/U5CB8 /u533a/u8863/u822c/ U62A5/U53F6/U538B/U6162/U53D4/U80CC ";
int x = 10;
สำหรับ (int i = 0; i <4; i ++) {
// รับอักขระจีนแบบสุ่มสี่ตัว ช่วงเวลา Unicode ของอักขระจีน: [/U4E00-/U9FA5]
สตริง ch = base.charat (ใหม่สุ่ม (). nextint (base.length ()))+"";
// ตั้งมุมการหมุน 0 -30 องศา (หารด้วย 30 ส่วนที่เหลือจะไม่มากกว่า 30)
ระดับ int = ใหม่สุ่ม (). nextint ()%30;
// มุมการหมุนของข้อความ*3.14/180 = เรเดียน
graphics.rotate (องศา*math.pi/180, x, 23);
graphics.drawstring (ch, x, 23);
// ล้างมุมการหมุน
graphics.rotate (-degree*math.pi/180, x, 23);
x = x+30;
-
-
โมฆะส่วนตัว DrawRandomline (กราฟิกกราฟิก) {
// วาดเส้นสุ่ม
graphics.setColor (color.magenta);
สำหรับ (int i = 0; i <5; i ++) {
-
* ส่งคืน pseudorandom, การกระจายอย่างสม่ำเสมอ {@code int} ค่า
* ระหว่าง 0 (รวม) และค่าที่ระบุ (พิเศษ)
-
int x1 = new random (). nextint (ความกว้าง);
int y1 = ใหม่สุ่ม (). nextint (ความสูง);
int x2 = ใหม่สุ่ม (). nextint (ความกว้าง);
int y2 = ใหม่สุ่ม (). nextint (ความสูง);
graphics.drawline (x1, y1, x2, y2);
-
-
Void Setbackground ส่วนตัว (กราฟิกกราฟิก) {
// ตั้งค่าสี: สีชมพู
graphics.setColor (color.pink);
graphics.fillrect (0, 0, ความกว้าง, ความสูง);
-
โมฆะส่วนตัว setBorder (กราฟิกกราฟิก) {
// ตั้งเส้นขอบ
graphics.setColor (color.blue);
graphics.drawRect (1, 1, Width-2, ความสูง 2);
-
โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse)
โยน servletexception, ioexception {
DOGET (คำขอการตอบกลับ);
-
-