1. 程式人生 > >學習筆記-圖片驗證碼生成

學習筆記-圖片驗證碼生成

/**
	 * 圖片驗證碼
	 * @param request
	 * @param response
	 */
	@RequestMapping("/verifyImage")
	public void verifyImage(HttpServletRequest request,HttpServletResponse response) {
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		// 表明生成的響應是圖片
		response.setContentType("image/jpeg");

		int width = 80, height = 25;
		BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);

		Graphics g = image.getGraphics();
		Random random = new Random();
		g.setColor(getRandColor(200, 250));
		g.fillRect(1, 1, width - 1, height - 1);
		g.setColor(new Color(102, 102, 102));
		g.drawRect(0, 0, width - 1, height - 1);
		g.setFont(mFont);

		g.setColor(getRandColor(160, 200));

		// 畫隨機線
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width - 1);
			int y = random.nextInt(height - 1);
			int xl = random.nextInt(6) + 1;
			int yl = random.nextInt(12) + 1;
			g.drawLine(x, y, x + xl, y + yl);
		}

		// 從另一方向畫隨機線
		for (int i = 0; i < 70; i++) {
			int x = random.nextInt(width - 1);
			int y = random.nextInt(height - 1);
			int xl = random.nextInt(12) + 1;
			int yl = random.nextInt(6) + 1;
			g.drawLine(x, y, x - xl, y - yl);
		}

		// 生成隨機數,並將隨機數字轉換為字母
		String sRand = "";
		for (int i = 0; i < 4; i++) {
			int itmp = random.nextInt(26) + 65;
			char ctmp = (char) itmp;
			sRand += String.valueOf(ctmp);
			g.setColor(new Color(20 + random.nextInt(110), 20 + random
					.nextInt(110), 20 + random.nextInt(110)));
			g.drawString(String.valueOf(ctmp), 15 * i + 10, 16);
		}
		g.dispose();
		String key = request.getParameter("key");//從頁面獲取key
		redisHelper.put(key, sRand);//放到redis快取中
		redisHelper.expire(key,5*60*1000);//設定過期時間為5分鐘
		try {
			ImageIO.write(image, "JPEG", response.getOutputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public Color getRandColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}
生成驗證碼如下圖

相關推薦

學習筆記-圖片驗證生成

/** * 圖片驗證碼 * @param request * @param response */ @RequestMapping("/verifyImage") public void verifyImage(HttpServletRequest re

Flask實戰第40天:圖片驗證生成技術

all see pillow 字體大小 src print new line 訪問 安裝pillow pip install pillow 在utils下新建python package命名為captcha 把需要需要用到的字體放在captcha下 編輯

Node.js圖片驗證生成svg-captcha

var option = { size: 6, // 驗證碼長度 ignoreChars: '0o1ilI', // 驗證碼字元中排除 0o1i noise: 2, // 干擾線條的數量 color: true, // 驗證碼的字元是否有顏色,預設沒有,如果設

[轉]php 圖片驗證生成 前後臺驗證

本文轉自:https://www.cnblogs.com/xiaoyezi/p/3541195.html 自己從前一段時間做了個php小專案,關於生成圖片驗證碼生成和後臺的驗證,把自己用到的東西總結一下,希望大家在用到相關問題的時候可以有一定的參考性。 首先,php驗證碼生成。 程式碼如下: 1.生成

Web---圖片驗證生成教程詳解-從簡單到複雜-從本地到前後臺

首先,我們先來看本地如何生成圖片驗證碼的,再來寫輸出到網頁的驗證碼如何實現。 先來看最簡單的—實現的功能是,將一個字串變成圖片寫入到檔案中 實現程式碼: package cn.hncu.img; import java.awt.Graphics;

圖片驗證生成以及前端驗證

第一種是session 驗證方式 <?php session_start(); //開啟session記錄驗證碼資料 vCode(4, 15);//設定驗證碼的字元個數和圖片基礎寬度 //vCode 字元數目,字型大小,圖片寬度、高度 functio

10.24 筆記 android 圖片驗證生成

轉載: http://www.eoeandroid.com/thread-329148-1-1.html package com.example.demo3; import java.util.Random; import android.graphics.B

PHP GD 生成圖片驗證+session獲取儲存驗證

mark ast rac alloc orm ext random col nbsp 以下分享一個PHP制作的圖片驗證碼案例:案比例如以下圖: 運用PHP GD具體請看:http://www.php.net/manual/zh/book.im

java生成圖片驗證實現

isp tex version edi ade 頁面 類型 logs exp 兩種圖片樣式分別是用Graphics類和Graphics2D 類實現(Graphics2D擴展了Graphics類),可以參考資料,畫出自己想要的圖片 Graphics2D 參考api地址:ht

jquery如何生成圖片驗證

sla style ctx ott etc func max ++ 導致 jQuery(function($){ /**生成一個隨機數**/ function randomNum(min, max) { return Math.f

PHP生成圖片驗證、點擊切換實例

調用 ret image etc 格式 點擊切換 article png get http://www.jb51.net/article/51506.htm 現在讓我們來看下 PHP 代碼 復制代碼代碼如下: <?php session_start();functi

python生成圖片驗證

per ont 字符 ESS ext ttf 隨機 dom ice import PIL from PIL import Image from PIL import ImageDraw,ImageFont import random def get_r

Java使用imageio、awt生成圖片驗證

static rem auto put 驗證碼 encode width nal cond 1、生成驗證碼工具類 public class CheckCodeTool { private Integer width = 80; private Intege

Django關於圖片驗證顯示筆記

數據 nbsp chan 筆記 pill 字節 驗證碼錯誤 code ida 1.訪問頁面 /login/ - 內部需要創建一張圖片,並且給用戶返回 - 創建一個白板 Session存放驗證碼 2.POST - 根據用戶提交的數據與session

SimpleCaptcha生成圖片驗證內容為亂碼

編輯器 cap sharp true 驗證 eboot 還需 light 報表 轉自:https://blog.csdn.net/wlwlwlwl015/article/details/51482065 前言 報表中發現有中文亂碼和中文字體不整齊(重疊)的情況,首先考慮

Django商城項目筆記No.4用戶部分-註冊接口-圖片驗證

cut 原因分析 路徑 tcl uid rtc 原因 第三方 clu Django商城項目筆記No.4用戶部分-註冊接口-圖片驗證碼 1、首先分析註冊業務接口 1.1.分析可得,至少這麽幾個接口 圖片驗證碼 短信驗證碼 用戶名是否存在 手機號是否存在 整體註冊

生成圖片驗證

dom 測試 clas void exceptio ide 隨機 file buffere 1 package util; 2 3 import javax.imageio.ImageIO; 4 import java.awt.*; 5 import ja

python生成圖片驗證程式碼

from PIL import Image, ImageDraw, ImageFont import random import string #所有可能的字元,主要是英文字母和數字 characters = string.ascii_letters+string.digits #

vue中 identify(生成圖片驗證)外掛

效果圖如下: 實現過程: 1.寫一個名為identify.vue的子元件 2.子元件的註冊和引用 3.主頁面中使用子元件   step1:identify.vue的子元件,程式碼如下: <template> <div

SpringCloud工作筆記063---Java 手機驗證生成_儲存到redis

    JAVA技術交流QQ群:170933152  List: 1.需求 2.實現 3.總結 ……1.需求…… 使用者提交訂單申請,需要輸入手機號,驗證二維碼。然後再判斷使用者輸入的手機號是否正確,正確則生成訂單資訊入庫