日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java生成驗證碼圖片的方法

瀏覽:21日期:2022-08-16 10:50:50

本文實例為大家分享了java生成驗證碼圖片的具體代碼,供大家參考,具體內容如下

示例一:

import org.apache.commons.codec.binary.Base64;import org.apache.commons.lang.RandomStringUtils;import org.apache.commons.lang.StringUtils;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import java.awt.*;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.util.Random;public class RandomVerifyCode { private static final String RANDOM_NUM = '23456789'; private static final String RANDOM_LETTER = 'ABCDEFGHJKMNPQRSTUVWXYZ'; private static final String RANDOM_LETTER_SMALL = 'abcdefghjkmnpqrstuvwxyz'; private static final String RANDOM_STRING = RANDOM_NUM + RANDOM_LETTER + RANDOM_LETTER_SMALL; private int width = 95;// 圖片寬 private int height = 25;// 圖片高 private int lineSize = 40;// 干擾線數量 private int stringNum = 4;// 隨機產生字符數量 private Random random = new Random(); /** * 獲得字體 */ private Font getFont() { return new Font('Fixedsys', Font.CENTER_BASELINE, 18); } /** * 獲得顏色 */ private Color getRandColor(int fc, int bc) { if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc - 16); int g = fc + random.nextInt(bc - fc - 14); int b = fc + random.nextInt(bc - fc - 18); return new Color(r, g, b); } /** * 生成隨機圖片(BASE64格式) */ public String getRandcode(HttpServletRequest request, StringBuffer imgBuffer) { // BufferedImage類是具有緩沖區的Image類,Image類是用于描述圖像信息的類 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); Graphics g = image.getGraphics();// 產生Image對象的Graphics對象,改對象可以在圖像上進行各種繪制操作 g.fillRect(0, 0, width, height);//圖片大小 g.setFont(new Font('Times New Roman', Font.ROMAN_BASELINE, 18));//字體大小 g.setColor(getRandColor(110, 133));//字體顏色 // 繪制干擾線 for (int i = 0; i <= lineSize; i++) { drowLine(g); } // 繪制隨機字符 String randomString = ''; for (int i = 1; i <= stringNum; i++) { randomString = drowString(g, randomString, i); } g.dispose(); ByteArrayOutputStream out = new ByteArrayOutputStream(); String encode = null; try { // 將內存中的圖片通過流動形式輸出到客戶端 ImageIO.write(image, 'JPEG', out); encode = 'data:image/jpeg;base64,'+Base64.encodeBase64String(out.toByteArray()); out.close(); } catch (Exception e) { LogHelper.error('登陸控制','驗證碼生成','將內存中生成的驗證碼圖片輸出為BASE64格式編碼失敗!'); } imgBuffer.append(encode); return randomString; } /** * 繪制字符串 */ private String drowString(Graphics g, String randomString, int i) { g.setFont(getFont()); g.setColor(new Color(random.nextInt(101), random.nextInt(111), random.nextInt(121))); String rand = String.valueOf(getRandomString(random.nextInt(RANDOM_STRING.length()))); randomString += rand; g.translate(random.nextInt(3), random.nextInt(3)); g.drawString(rand, 13 * i, 16); return randomString; } /** * 繪制干擾線 */ private void drowLine(Graphics g) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(13); int yl = random.nextInt(15); g.drawLine(x, y, x + xl, y + yl); } /** * 獲取隨機的字符 */ public String getRandomString(int num) { return String.valueOf(RANDOM_STRING.charAt(num)); } public static String randomString(int length){ return RandomStringUtils.random(length, RANDOM_STRING.toCharArray()); }}

示例二:

import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Map;import java.util.Random;public class CodeUtil { private static int width = 90;// 定義圖片的width 90 private static int height = 20;// 定義圖片的height 20 private static int codeCount = 4;// 定義圖片上顯示驗證碼的個數 private static int xx = 15; private static int fontHeight = 18; private static int codeY = 16; private static char[] codeSequence = {’A’, ’B’, ’C’, ’D’, ’E’, ’F’, ’G’, ’H’, ’J’, ’K’, ’M’, ’N’, ’P’, ’Q’, ’R’, ’S’, ’T’, ’U’, ’V’, ’W’, ’X’, ’Y’, ’Z’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’}; public static Map<String,RenderedImage> codePicMap = new HashMap<>(); /** * 生成一個map集合 * code為生成的驗證碼 * codePic為生成的驗證碼BufferedImage對象 * * @return */ public static Map<String, Object> generateCodeAndPic() { // 定義圖像buffer BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // Graphics2D gd = buffImg.createGraphics(); // Graphics2D gd = (Graphics2D) buffImg.getGraphics(); Graphics gd = buffImg.getGraphics(); // 創建一個隨機數生成器類 Random random = new Random(); // 將圖像填充為藍色// gd.setColor(Color.WHITE); gd.setColor(new Color(232,240,254)); gd.fillRect(0, 0, width, height); // 創建字體,字體的大小應該根據圖片的高度來定。 Font font = new Font('Fixedsys', Font.BOLD, fontHeight); // 設置字體。 gd.setFont(font); // 畫邊框。 gd.setColor(Color.BLACK); gd.drawRect(0, 0, width - 1, height - 1); // 隨機產生40條干擾線,使圖象中的認證碼不易被其它程序探測到。 gd.setColor(Color.BLACK); for (int i = 0; i < 10; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); gd.drawLine(x, y, x + xl, y + yl); } // randomCode用于保存隨機產生的驗證碼,以便用戶登錄后進行驗證。 StringBuffer randomCode = new StringBuffer(); int red = 0, green = 0, blue = 0; // 隨機產生codeCount數字的驗證碼。 for (int i = 0; i < codeCount; i++) { // 得到隨機產生的驗證碼數字。 String code = String.valueOf(codeSequence[random.nextInt(31)]); // 產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。 red = random.nextInt(255); green = random.nextInt(255); blue = random.nextInt(255); // 用隨機產生的顏色將驗證碼繪制到圖像中。 gd.setColor(new Color(red, green, blue)); gd.drawString(code, (i + 1) * xx, codeY); // 將產生的四個隨機數組合在一起。 randomCode.append(code); } Map<String, Object> map = new HashMap<>(); //存放驗證碼 map.put('code', randomCode); //存放生成的驗證碼BufferedImage對象 map.put('codePic', buffImg); return map; } public static void main(String[] args) throws Exception { //創建文件輸出流對象 OutputStream out = new FileOutputStream('D://img/' + System.currentTimeMillis() + '.jpg'); Map<String, Object> map = CodeUtil.generateCodeAndPic(); ImageIO.write((RenderedImage) map.get('codePic'), 'jpeg', out); System.out.println('驗證碼的值為:' + map.get('code')); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美+亚洲+精品+三区| 精品中文字幕一区二区三区| 国产亚洲网站| 亚洲精品一级二级| 国产精品第一| 国产精品久久久久久久免费软件| 五月激激激综合网色播| 中文字幕日韩高清在线| 蜜臀国产一区二区三区在线播放| 91精品观看| 伊人久久成人| 在线亚洲观看| 欧美专区18| 日本不卡不码高清免费观看| 亚洲精品美女91| 欧美伊人久久| 欧美激情视频一区二区三区免费| 老色鬼精品视频在线观看播放| 韩日一区二区| 成人一二三区| 色爱av综合网| 国产精品普通话对白| 亚洲麻豆一区| 亚洲影视一区二区三区| 欧美片第1页综合| 精品视频在线一区二区在线| www在线观看黄色| 国产综合婷婷| 日本大胆欧美人术艺术动态| 日韩高清欧美激情| 麻豆国产91在线播放| 日韩深夜视频| 亚洲激情不卡| 日本久久二区| 久久国产精品美女| 正在播放日韩精品| 999在线观看精品免费不卡网站| 中文字幕亚洲在线观看| 国产精品巨作av| 亚洲不卡系列| 免费看精品久久片| 国产精品欧美在线观看| 国产粉嫩在线观看| 日韩视频久久| 欧美精品福利| 欧美日韩免费看片| 老司机精品久久| 国产精品草草| 九一精品国产| 日本强好片久久久久久aaa| 日韩1区2区| 视频一区在线播放| 久久精品亚洲一区二区| 亚洲电影在线一区二区三区| 91伊人久久| 久久久人人人| 欧美日本久久| 国产一区观看| 国产乱码精品一区二区三区亚洲人| 日韩专区精品| 日韩欧美久久| 日产精品一区| 日本在线不卡视频| 日本а中文在线天堂| 亚洲精品一二三区区别| 国产日韩高清一区二区三区在线| 日本免费一区二区三区四区| 亚洲一区二区小说| 欧美aa在线观看| 久久狠狠久久| 99国产精品99久久久久久粉嫩| 国产精品115| 一本色道精品久久一区二区三区| 国产高清视频一区二区| 欧美专区在线| 日韩欧美中文| 欧美精品影院| 99在线|亚洲一区二区| 精品国产欧美| 亚洲影视一区| 久久亚洲精品中文字幕蜜潮电影| 国产精品三p一区二区| 国产精品女主播一区二区三区| 九九99久久精品在免费线bt| 亚洲天堂日韩在线| 99国产精品免费视频观看| 国产精品视频一区二区三区综合| 丝袜美腿高跟呻吟高潮一区| 亚洲伦乱视频| 精品五月天堂| 国产亚洲久久| 午夜在线观看免费一区| 三级在线看中文字幕完整版| 国产区精品区| 久久亚洲电影| 久久一区二区三区喷水| 精品九九久久| 国产乱码精品一区二区亚洲| 蜜臀av一区二区在线免费观看| 日韩中文在线电影| 精品视频国内| 国产日韩欧美三级| 日韩中文字幕一区二区高清99| 婷婷六月综合| 电影天堂国产精品| 精品国产a一区二区三区v免费| 日韩精品一区二区三区中文在线 | 99精品综合| 精品国产成人| 国产精品videosex极品| 奇米色欧美一区二区三区| 亚洲性视频在线| 日本欧美在线看| 欧美中文日韩| 国产农村妇女精品一二区| 亚洲先锋成人| 香蕉成人av| 国产在线不卡一区二区三区| 国产精品超碰| 国产精久久久| 国产精品亚洲欧美| 国产精品视频首页| 国产欧美日韩精品一区二区免费 | 视频一区二区不卡| 免费日本视频一区| 在线一区二区三区视频| 亚洲自啪免费| 在线一区二区三区视频| 中文字幕成人| 亚洲青青久久| 国产日本亚洲| 麻豆精品av| 天堂а√在线最新版中文在线| 日韩一区二区中文| 欧美美女一区| 老司机久久99久久精品播放免费| 男女激情视频一区| 亚洲日产国产精品| 蜜桃久久av一区| 综合一区在线| 日韩av影院| 亚久久调教视频| 中文一区一区三区免费在线观 | 国产日韩电影| 欧美黄页在线免费观看| 国产调教精品| 欧美精品自拍| 亚洲精品看片| 日本亚洲三级在线| 亚洲精品欧美| 亚洲精品伊人| 日韩精品一区二区三区av | 亚洲精品九九| 最新国产精品久久久| 亚洲午夜久久| 日韩欧美激情| 国产精品最新自拍| 国产成人a视频高清在线观看| 久久99高清| 日韩欧美精品综合| 成人午夜国产| 欧美日韩精品免费观看视频完整| 亚洲网站视频| 久久成人精品| 亚洲精品在线二区| 日韩国产精品久久久| 日韩精品欧美精品| 日本成人精品| 国产+成+人+亚洲欧洲在线| 四虎国产精品免费观看| 成人小电影网站| 亚洲激情五月| 天堂av在线一区| 97国产成人高清在线观看| 激情综合网站| 免费国产亚洲视频| 久久精品99国产精品| 久久不卡国产精品一区二区| 精品国产欧美日韩一区二区三区| 欧美成人国产| 石原莉奈在线亚洲二区| 蜜臀久久久99精品久久久久久| 日韩av不卡在线观看| 麻豆久久久久久| 日韩免费视频| 亚洲欧美日本日韩| 日韩免费精品| 国产一区二区三区黄网站| av亚洲一区二区三区| 日本一区二区三区中文字幕| 久久影院一区二区三区| 久久男女视频| 一二三区精品| 国产精品成人**免费视频| 伊人影院久久| 日本麻豆一区二区三区视频| 国产日韩欧美高清免费| 日本在线高清| 亚洲人成亚洲精品| 91精品国产自产在线观看永久∴|