咱們都知道在網頁或者一些軟件登錄界面上,好比QQ會出現註冊/登陸驗證碼,那咱們如何製做驗證碼呢? 其實,所謂的驗證碼,在我看來,就是製做一張圖片,步驟以下: 1.獲取指定長度的隨機字符串,其聲明函數是:public String getRandomStr(String []regter,int leg,int strlh); 三個參數爲: 單個字符字符串數組,如:[]regter={"a","b","c"};,字符串數組長度,定義得到字符串長度; 實現函數以下: public String getRandomStr(String []regter,int leg,int strlh) { Random intRandom = new Random(); StringBuffer str = new StringBuffer(); for (int i = 0; i < strlh; i++) str.append(String.valueOf(regter[intRandom.nextInt(leg)])); return str.toString(); } 2.將字符串「畫」在jpg格式圖片上,其聲明函數是:public void drawPicture(); 實現函數以下: public void drawPicture() { BufferedImage image=new BufferedImage(Weight, Height,BufferedImage.TYPE_INT_RGB);//weight,height 是int型圖片長寬變量 Graphics g =image.getGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, Weight, Height);// ?--- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 調用 getRandomStr函數 g.drawString(); 而後優化 } 3.生成jpg格式圖片,其聲明函數是:public void createJpg(String path); 實現函數以下: public void createJpg(String path) { try { FileOutputStream fos = new FileOutputStream(path); BufferedOutputStream bos = new BufferedOutputStream(fos); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos); encoder.encode(image); bos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ImageFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 這樣工做基本完成。