日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

验证码识别技术

發布時間:2025/6/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 验证码识别技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如題,本人在做一個關于驗證碼識別的程序。要求識別的是隨機英文字母+隨機數字+隨機顏色+隨機位置+隨機長度。 有高手來幫幫忙哦。若是有最基礎的隨機數字+隨機大寫英文字母的四位驗證碼識別的程序, ? 最佳答案 public void service(HttpServletRequest req, HttpServletResponse res)throws IOException{ // 驗證碼圖片的寬度。int width = 70;//驗證碼圖片的高度。int height=36;BufferedImage buffImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);Graphics2D g=buffImg.createGraphics();//創建一個隨機數生成器類。Random random=new Random();// 設定圖像背景色(因為是做背景,所以偏淡)g.setColor(getRandColor(180, 250));g.fillRect(0,0,width,height);//創建字體,字體的大小應該根據圖片的高度來定。Font font=new Font("Times New Roman",Font.PLAIN,28);//設置字體。g.setFont(font);//畫邊框。g.setColor(Color.BLACK);g.drawRect(0,0,width-1,height-1); // 隨機產生160條干擾線,使圖象中的認證碼不易被其它程序探測到。g.setColor(Color.GRAY);for (int i=0;i<50;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);}//randomCode用于保存隨機產生的驗證碼,以便用戶登錄后進行驗證。StringBuffer randomCode=new StringBuffer();// 設置默認生成4個驗證碼int length = 4;// 設置備選驗證碼:包括"a-z"和數字"0-9"String base = "abcdefghijklmnopqrstuvwxyz0123456789";int size = base.length();//隨機產生4位數字的驗證碼。for (int i=0;i<length;i++) {//得到隨機產生的驗證碼數字。int start = random.nextInt(size);String strRand = base.substring(start, start + 1);//用隨機產生的顏色將驗證碼繪制到圖像中。 // g.setColor(new Color(red,green,blue));// 生成隨機顏色(因為是做前景,所以偏深)g.setColor(getRandColor(1, 100));g.drawString(strRand,13*i+6,28);//將產生的四個隨機數組合在一起。randomCode.append(strRand);}//將四位數字的驗證碼保存到Session中。HttpSession session=req.getSession();session.setAttribute("rand",randomCode.toString());//禁止圖像緩存。res.setHeader("Pragma","no-cache");res.setHeader("Cache-Control","no-cache");res.setDateHeader("Expires", 0);res.setContentType("image/jpeg");//將圖像輸出到Servlet輸出流中。ServletOutputStream sos=res.getOutputStream();ImageIO.write(buffImg, "jpeg",sos);sos.close();}Color getRandColor(int fc,int bc){//給定范圍獲得隨機顏色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);}} 這個是之前弄過的一個,可能比你的需求是簡單了些,你就作為簡單的參考吧

轉載于:https://www.cnblogs.com/strugglesMen/archive/2011/04/18/2020121.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的验证码识别技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。