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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

简单验证码的原理

發(fā)布時(shí)間:2024/9/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单验证码的原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

BufferedImage 子類描述具有可訪問(wèn)圖像數(shù)據(jù)緩沖區(qū)的 Image繼承自Image實(shí)現(xiàn)其方法,主要的作用就是將圖片加載到內(nèi)存對(duì)其進(jìn)行操作

package responseproject;import java.io.IOException; import java.util.Random; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;@WebServlet("/checkcode") public class CheckCode extends HttpServlet{/*** */private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubthis.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {int imgwidth=100;int imgheight=50;//1.創(chuàng)建圖片對(duì)象,在內(nèi)存中圖片(驗(yàn)證碼圖片對(duì)象)BufferedImage image=new BufferedImage(imgwidth,imgheight,BufferedImage.TYPE_INT_RGB); //也可以指定讀取image=imageIO.read(new file())//2.美化圖片Graphics g=image.getGraphics(); //獲得畫(huà)筆對(duì)象//設(shè)置畫(huà)筆顏色g.setColor(Color.pink);//在創(chuàng)建的圖片對(duì)象大小中填充矩形,顏色為上面設(shè)置的顏色,第一,二個(gè)參數(shù)是起始點(diǎn)的x,y,第三,四個(gè)參數(shù)是有多寬,有多高g.fillRect(0, 0, imgwidth, imgheight);//重新設(shè)置畫(huà)筆顏色g.setColor(Color.blue);//在image上畫(huà)邊框,第一,二個(gè)參數(shù)是起始點(diǎn)的x,y,第三,四個(gè)參數(shù)是有多寬,有多高,注意:邊框占一個(gè)像素,所以需要寬和高-1才能覆蓋全部g.drawRect(0, 0, imgwidth-1, imgheight-1);//隨機(jī)設(shè)置驗(yàn)證碼的值String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";Random random=new Random();//隨機(jī)在image中寫(xiě)字符串,第三,四個(gè)參數(shù)是畫(huà)的位置for(int i=1;i<5;i++) {int index=random.nextInt(str.length()); //隨機(jī)選取字母字符g.setFont(new Font("宋體", Font.PLAIN, 20)); //設(shè)置畫(huà)筆大小g.drawString(str.charAt(index)+"",imgwidth/5*i ,25); }//隨機(jī)畫(huà)干擾線,第一,二個(gè)參數(shù)是起始點(diǎn)的x,y,第三,四個(gè)參數(shù)是最后一個(gè)點(diǎn)的x,yint x1=0,y1=0,x2=0,y2=0;for(int i=0;i<=8;i++) { //畫(huà)8次線條x1=random.nextInt(imgwidth);y1=random.nextInt(imgheight);x2=random.nextInt(imgwidth);y2=random.nextInt(imgheight);g.setColor(Color.gray);g.drawLine(x1, y1, x2, y2);}//3.圖片顯示在頁(yè)面上ImageIO.write(image, "jpg", resp.getOutputStream()); //將圖片寫(xiě)入指定文件(第三個(gè)參數(shù)是指定的位置Fileoutpotstream(new File(""))}} 結(jié)果圖:

?

總結(jié)

以上是生活随笔為你收集整理的简单验证码的原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。