短視訊商城系統,通過Java實現圖片驗證碼,點選重新整理圖片驗證碼
短視訊商城系統,通過Java實現圖片驗證碼,點選重新整理圖片驗證碼
建立生成圖片驗證碼的工具類:
import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Random; /** * 驗證碼生成器 * */ public class SCaptcha { // 圖片的寬度。 private int width = 120; // 圖片的高度。 private int height = 40; // 驗證碼字元個數 private int codeCount = 4; // 驗證碼干擾線數 private int lineCount = 50; // 驗證碼 private String code = null; // 驗證碼圖片Buffer private BufferedImage buffImg = null; // 隨即的字元陣列 private char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '2', '3', '4', '5', '6', '7', '8', '9' }; // 生成隨機數 private Random random = new Random(); public SCaptcha() { this.createCode(); } /** * * @param width 圖片寬 * @param height 圖片高 */ public SCaptcha(int width, int height) { this.width = width; this.height = height; this.createCode(); } /** * * @param width 圖片寬 * @param height 圖片高 * @param codeCount 字元個數 * @param lineCount 干擾線條數 */ public SCaptcha(int width, int height, int codeCount, int lineCount) { this.width = width; this.height = height; this.codeCount = codeCount; this.lineCount = lineCount; this.createCode(); } public void createCode() { int codeX = 0; int fontHeight = 0; fontHeight = height - 5;// 字型的高度 codeX = width / (codeCount + 3);// 每個字元的寬度 // 影像buffer buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); // 將影像填充為白色 g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); // 建立字型 ImgFontByte imgFont = new ImgFontByte(); Font font = imgFont.getFont(fontHeight); g.setFont(font); StringBuffer randomCode = new StringBuffer(); // 隨機產生驗證碼字元 for (int i = 0; i < codeCount; i++) { String strRand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]); // 設定字型顏色 g.setColor(getRandomColor()); // 設定字型位置 g.drawString(strRand, (i + 1) * codeX, getRandomNumber(height / 2) + 25); randomCode.append(strRand); } code = randomCode.toString(); } /** 獲取隨機顏色 */ private Color getRandomColor() { int r = getRandomNumber(255); int g = getRandomNumber(255); int b = getRandomNumber(255); return new Color(r, g, b); } /** 獲取隨機數 */ private int getRandomNumber(int number) { return random.nextInt(number); } public void write(String path) throws IOException { OutputStream sos = new FileOutputStream(path); this.write(sos); } public void write(OutputStream sos) throws IOException { ImageIO.write(buffImg, "png", sos); sos.close(); } public BufferedImage getBuffImg() { return buffImg; } public String getCode() { return code; } /** 字型樣式類 */ class ImgFontByte { public Font getFont(int fontHeight) { try { Font baseFont = Font.createFont(Font.HANGING_BASELINE, new ByteArrayInputStream( hex2byte(getFontByteStr()))); return baseFont.deriveFont(Font.PLAIN, fontHeight); } catch (Exception e) { return new Font("Arial", Font.PLAIN, fontHeight); } } private byte[] hex2byte(String str) { if (str == null) return null; str = str.trim(); int len = str.length(); if (len == 0 || len % 2 == 1) return null; byte[] b = new byte[len / 2]; try { for (int i = 0; i < str.length(); i += 2) { b[i / 2] = (byte) Integer.decode("0x" + str.substring(i, i + 2)).intValue(); } return b; } catch (Exception e) { return null; } } // 字型檔案的十六進位制字串 private String getFontByteStr() { //防止報字串長度過長錯誤,改為從配置檔案讀取 return ReadFontByteProperties.getFontByteStr(); } } }
controller層程式碼:
// 設定響應的型別格式為圖片格式 response.setContentType("image/jpeg"); // 禁止影像快取。 response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); //例項生成驗證碼物件 SCaptcha instance = new SCaptcha(); //將驗證碼存入session request.getSession().setAttribute("verification", instance.getCode()); //向頁面輸出驗證碼圖片 instance.write(response.getOutputStream());
頁面程式碼:
<img id="vimg" src="${path }/login/verification"/>
以上就是短視訊商城系統,通過Java實現圖片驗證碼,點選重新整理圖片驗證碼, 更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2903828/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 短視訊直播原始碼,拖動滑塊實現圖片驗證效果原始碼
- 圖片驗證碼 CaptchaAPT
- 圖片驗證碼介面
- node實現登入圖片驗證碼
- golang 生成圖片驗證碼Golang
- C#圖片驗證碼C#
- 短視訊app搭建,利用javaWeb生成一張簡易驗證碼圖片APPJavaWeb
- 分享一個圖片驗證碼功能的實現
- java圖形驗證碼實現Java
- 【日常筆記】生成驗證碼圖片筆記
- 用python生成驗證碼圖片Python
- servlet awt隨機圖片驗證碼Servlet隨機
- 圖形驗證碼圖片樣式設定
- php短視訊原始碼,自動生成驗證碼,支援點選更換驗證碼數字PHP原始碼
- 3個隨機圖片驗證程式碼隨機
- 短視訊商城系統,手機獲取到驗證碼後自動填入
- 字元型圖片驗證碼識別完整過程及Python實現字元Python
- Java隨機生成圖片與HTML表單中的驗證碼實現Java隨機HTML
- 短視訊app原始碼,點選檢視圖片,雙指放大APP原始碼
- TP6實現前後端分離的圖片驗證碼,驗證碼以介面形式返回後端
- 點選驗證碼不能實現重新整理問題
- 5種PHP生成圖片驗證碼例項PHP
- 登陸介面模組解析——生成圖片驗證碼
- 【例項】使用GD庫生成圖片驗證碼
- Python OCR識別圖片驗證碼(一)Python
- Python OCR識別圖片驗證碼(二)Python
- 短視訊直播系統,接收到產生驗證碼請求時隨機生成驗證碼隨機
- Python圖片驗證碼降噪 — 8鄰域降噪Python
- 利用tesseract解析簡單數字驗證碼圖片
- <input>文字框和驗證碼圖片垂直對齊
- iOS開發 - 隨機圖片驗證碼封裝iOS隨機封裝
- python生成驗證碼,文字轉換為圖片Python
- 驗證碼---js重新整理驗證碼JS
- java實現驗證碼Java
- SpringBoot + Spring Security 學習筆記(三)實現圖片驗證碼認證Spring Boot筆記
- 圖形驗證碼設計實現
- 短視訊直播原始碼,動態釋出時選擇圖片、上傳圖片原始碼
- app直播原始碼,js實現上傳圖片型別+大小+尺寸驗證APP原始碼JS型別