java 验证码_如何使用Java生成随机验证码
生活随笔
收集整理的這篇文章主要介紹了
java 验证码_如何使用Java生成随机验证码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我們想想,如何用Java繪制圖片呢?
第一步 尋找? 紙畫畫要紙的
第二步 尋找筆 畫畫當(dāng)然也要筆
在開始之前,我們需要用到幾個(gè)主要的類
- BufferedImage 用來(lái)緩寸你畫的東西
- Random 隨機(jī)驗(yàn)證碼,肯定要隨機(jī)
- Font 字體隨機(jī)才能扭曲
- Color 顏色表示也要隨機(jī)
- ImageIO 保存圖片
恭喜,你已經(jīng)完成一半啦
我們現(xiàn)在開始了
建一個(gè)類名字叫RandomCode
(其實(shí)你開心的話,叫什么都可以)
里面包括以下幾個(gè)成員變量:
BufferedImage image = null;//用來(lái)緩存圖片(在運(yùn)行內(nèi)存中)Graphics2D gd = null;//畫筆的2D形式Random random = null;//隨機(jī)數(shù)生成的類StringBuffer charBuff = new StringBuffer();//存12345...90abc...xyzABC...XYZ,用來(lái)隨機(jī)取字符ArrayList stringBuff = new ArrayList();//字體列表,等下在方法中隨機(jī)取一個(gè)字體ArrayList colorBuff = new ArrayList();//顏色列表,等下在方法中隨機(jī)取一個(gè)顏色StringBuffer text = new StringBuffer();//隨機(jī)生成的文本里面包括以下幾個(gè)成員方法:
//此類的構(gòu)造方法,構(gòu)造出畫步,得到2D畫筆,初始化出所有的字符顏色字體。public RandomCode(){ random = new Random(); image = new BufferedImage(160,40,BufferedImage.TYPE_INT_RGB); gd = (Graphics2D)image.getGraphics(); this.Init(); } //初始化出所有的字符顏色字體 private void Init(){ charBuff.append("1234567890"); charBuff.append("abcdefghigklmpqrstuvwxyz"); charBuff.append("ABCDEFGHIGKLMPQRSTUVWXYZ"); stringBuff.add("幼圓"); stringBuff.add("宋體"); stringBuff.add("華文琥珀"); stringBuff.add("華文行楷"); stringBuff.add("華文隸書"); colorBuff.add(Color.RED); colorBuff.add(Color.BLACK); colorBuff.add(Color.BLUE); colorBuff.add(Color.GREEN); colorBuff.add(Color.PINK); } //獲取一個(gè)隨機(jī)的整數(shù),然后在通過索引獲取一個(gè)所及字符 public char getRandomChar(){ int rand = random.nextInt(58); return charBuff.charAt(rand); } //獲取一個(gè)隨機(jī)字體 public String getRandomFont(){ int rand = random.nextInt(stringBuff.size()); return stringBuff.get(rand); } //獲取一個(gè)隨機(jī)顏色 public Color getRandomColor(){ int rand = random.nextInt(colorBuff.size()); return colorBuff.get(rand); }//繪制隨機(jī)二維碼 public void drowImage(){ gd.setColor(Color.WHITE); gd.fillRect(0, 0, image.getWidth(), image.getHeight());//用白色填充畫布 for (int i = 0; i < 4; i++) {//循環(huán)四次畫四個(gè)隨機(jī)字符 gd.setColor(getRandomColor());設(shè)置畫筆顏色,顏色為隨機(jī)獲取 gd.setFont(new Font(getRandomFont(), Font.BOLD, image.getHeight()));//設(shè)置隨機(jī)字體 char rand = getRandomChar();text.append(rand);//獲取一個(gè)隨機(jī)字符,然后保存起來(lái),以便之后獲取 gd.drawString(String.valueOf(rand), i*image.getHeight(), image.getHeight()-12); //繪制字符串 注:String.valueOf(char) 是將字符轉(zhuǎn)換為字符串。 } for (int i = 0; i < random.nextInt(2)+1; i++) {//隨機(jī)畫1~2跟干擾線 gd.setColor(getRandomColor()); gd.drawLine(0, random.nextInt(image.getHeight()), image.getWidth(), random.nextInt(image.getHeight())); } } //講圖片保存到傳入的路徑 public void output(String imagePath){ try { ImageIO.write(image, "JPEG總結(jié)
以上是生活随笔為你收集整理的java 验证码_如何使用Java生成随机验证码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习:模块
- 下一篇: 学习笔记:Keras 错误提示