java 验证码_如何使用Java生成随机验证码
生活随笔
收集整理的這篇文章主要介紹了
java 验证码_如何使用Java生成随机验证码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們想想,如何用Java繪制圖片呢?
第一步 尋找? 紙畫畫要紙的
第二步 尋找筆 畫畫當然也要筆
在開始之前,我們需要用到幾個主要的類
- BufferedImage 用來緩寸你畫的東西
- Random 隨機驗證碼,肯定要隨機
- Font 字體隨機才能扭曲
- Color 顏色表示也要隨機
- ImageIO 保存圖片
恭喜,你已經完成一半啦
我們現在開始了
建一個類名字叫RandomCode
(其實你開心的話,叫什么都可以)
里面包括以下幾個成員變量:
BufferedImage image = null;//用來緩存圖片(在運行內存中)Graphics2D gd = null;//畫筆的2D形式Random random = null;//隨機數生成的類StringBuffer charBuff = new StringBuffer();//存12345...90abc...xyzABC...XYZ,用來隨機取字符ArrayList stringBuff = new ArrayList();//字體列表,等下在方法中隨機取一個字體ArrayList colorBuff = new ArrayList();//顏色列表,等下在方法中隨機取一個顏色StringBuffer text = new StringBuffer();//隨機生成的文本里面包括以下幾個成員方法:
//此類的構造方法,構造出畫步,得到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); } //獲取一個隨機的整數,然后在通過索引獲取一個所及字符 public char getRandomChar(){ int rand = random.nextInt(58); return charBuff.charAt(rand); } //獲取一個隨機字體 public String getRandomFont(){ int rand = random.nextInt(stringBuff.size()); return stringBuff.get(rand); } //獲取一個隨機顏色 public Color getRandomColor(){ int rand = random.nextInt(colorBuff.size()); return colorBuff.get(rand); }//繪制隨機二維碼 public void drowImage(){ gd.setColor(Color.WHITE); gd.fillRect(0, 0, image.getWidth(), image.getHeight());//用白色填充畫布 for (int i = 0; i < 4; i++) {//循環四次畫四個隨機字符 gd.setColor(getRandomColor());設置畫筆顏色,顏色為隨機獲取 gd.setFont(new Font(getRandomFont(), Font.BOLD, image.getHeight()));//設置隨機字體 char rand = getRandomChar();text.append(rand);//獲取一個隨機字符,然后保存起來,以便之后獲取 gd.drawString(String.valueOf(rand), i*image.getHeight(), image.getHeight()-12); //繪制字符串 注:String.valueOf(char) 是將字符轉換為字符串。 } for (int i = 0; i < random.nextInt(2)+1; i++) {//隨機畫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總結
以上是生活随笔為你收集整理的java 验证码_如何使用Java生成随机验证码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习:模块
- 下一篇: java美元兑换,(Java实现) 美元