บล็อกนี้บันทึกการใช้งานรหัสการยืนยันภาพในโครงการ แม้ว่ามันจะไม่ซับซ้อนมาก แต่ความทรงจำที่ดีก็ไม่ดีเท่าปากกาที่ไม่ดี จำไว้!
แพ็คเกจ com.zl.util; นำเข้า Java.awt.Color; นำเข้า Java.awt.Font; นำเข้า java.awt.graphics; นำเข้า java.awt.image.bufferedimage; นำเข้า Java.io.FileOutputStream; นำเข้า java.io.ioException; นำเข้า Java.io.OutputStream; นำเข้า java.util.random; นำเข้า Javax.imageio.imageio; / ** * @author ZZC * @date 6 พฤศจิกายน 2017 * @param * @desc การสร้างรหัสการตรวจสอบกราฟิก * */ คลาสสาธารณะ VerifyUtil {// ตัวละครการตรวจสอบชุดตัวละครตั้งค่าตัวละครคงที่ส่วนตัว [] chars = {'0', '1', '2', '3', '4', ',' 6 ' 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', '' ',' ',' 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; // จำนวนอักขระส่วนตัวขนาดสุดท้ายคงที่ int = 4; // จำนวนของสายสัญญาณรบกวนส่วนตัวเส้นสุดท้าย int เส้นสุดท้าย = 5; // ความกว้างส่วนตัวคงที่ความกว้าง int สุดท้าย = 80; // ความสูงความสูงคงที่ความสูง int ความสูง = 40; // ตัวอักษรขนาดส่วนตัวคงสุดท้าย int font_size = 30; /*** สร้างรหัสการตรวจสอบแบบสุ่มและรูปภาพ* วัตถุ [0]: สตริงรหัสการตรวจสอบ; * Object [1]: รูปภาพรหัสการตรวจสอบ */ วัตถุคงที่สาธารณะ [] createImage () {StringBuffer sb = new StringBuffer (); // 1. สร้างภาพบัฟเฟอร์ภาพว่างเปล่า = bufferedImage ใหม่ (ความกว้าง, ความสูง, bufferedImage.type_int_rgb); // 2. รับกราฟิกกราฟิกแปรงภาพ = image.getGraphics (); // 3. ตั้งค่ากราฟิกสีแปรง SetColor (color.light_gray); // 4. วาดกราฟิกพื้นหลังสี่เหลี่ยมผืนผ้า fillrect (0, 0, ความกว้าง, ความสูง); // 5. วาดอักขระสุ่มสุ่ม run = new random (); สำหรับ (int i = 0; i <size; i ++) {// ใช้ดัชนีอักขระสุ่ม int n = ran.nextint (chars.length); // ตั้งค่ากราฟิกสีแบบสุ่ม SetColor (getRandomColor ()); // ตั้งค่าขนาดตัวอักษรกราฟิก SetFont (ฟอนต์ใหม่ (null, font.bold + font.italic, font_size)); // วาดตัวละคร Graphic.DrawString (Chars [n] + "", i * ความกว้าง/ ขนาด, ความสูง * 2/3); // บันทึกอักขระ sb.append (chars [n]); } // 6. วาดเส้นสัญญาณรบกวนสำหรับ (int i = 0; i <lines; i ++) {// ตั้งค่ากราฟิกสีแบบสุ่ม SetColor (getRandomColor ()); // กราฟิกสีแบบสุ่ม (ran.nextint (ความกว้าง), ran.nextint (ความสูง), ran.nextint (ความกว้าง), ran.nextint (ความสูง)); } // 7. ส่งคืนรหัสการตรวจสอบและรูปภาพส่งคืนวัตถุใหม่ [] {sb.toString (), image}; } / *** สีแบบสุ่ม* / สีสาธารณะคงที่ getRandomColor () {สุ่มวิ่ง = ใหม่สุ่ม (); สีสี = สีใหม่ (ran.nextint (256), ran.nextint (256), ran.nextint (256)); สีกลับ; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น IOException {object [] objs = createImage (); BufferedImage image = (bufferedImage) OBJS [1]; OutputStream OS = ใหม่ fileOutputStream ("D: /1.png"); Imageio.write (รูปภาพ, "png", OS); os.close (); - เลเยอร์คอนโทรลเลอร์
/** * @author ZZC * @date 6 พฤศจิกายน 2017 * @param * @DESC การตรวจสอบกราฟิกการสร้างรหัสวิธีการสร้างรหัส * */@requestmapping ("/valicode") โมฆะสาธารณะ valicode (httpservletResponse การตอบสนองพารามิเตอร์ httpsession OBJS = VerifyUtil.CreateImage (); // จัดเก็บรหัสการตรวจสอบลงในเซสชันเซสชัน SetAttribute ("ImageCode", OBJS [0]); // เอาต์พุตภาพไปยังเบราว์เซอร์บัฟเฟอร์ภาพ = (bufferedImage) objs [1]; Response.SetContentType ("Image/PNG"); OutputStream OS = Response.GetOutputStream (); Imageio.write (รูปภาพ, "png", OS); -ผลการทำงาน:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น