RandomImage.aspx.cs:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; public partial class RandomImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //輸出帶有隨機驗證碼的圖片 CreateCheckCodeImage(this.GenerateCheckCode()); } /// <summary> /// 隨機生成4位隨機字符(0-9)(A-Z) /// </summary> /// <returns></returns> private string GenerateCheckCode() { //定義驗證碼長度 int CODELENGTH = 4; int number; string RandomCode = string.Empty; Random r = new Random(); for (int i = 0; i < CODELENGTH; i++) { number = r.Next(); //字符從0-9,A-Z中隨機生成,對應的ASCII碼分別爲48-57,65-90 number %= 36; if (number < 10) { number += 48; } else { number += 55; } RandomCode += ((char)number).ToString(); } //在Cookie中保存驗證碼 //Response.Cookies.Add(new HttpCookie("CheckCode",RandomCode)); Session["CheckCode"] = RandomCode; return RandomCode; } /// <summary> /// 輸出包括4位隨機數字的圖片 /// </summary> /// <param name="CheckCode"></param> private void CreateCheckCodeImage(string CheckCode) { //若驗證碼爲空,則直接返回 if (CheckCode == null || CheckCode.Trim() == string.Empty) { return; } //根據驗證碼的長度確定輸出圖片的寬度 int iWidth = (int)Math.Ceiling(CheckCode.Length*15m); int iHeight = 20; //創建圖像 Bitmap image = new Bitmap(iWidth, iHeight); //從圖像獲取一個繪圖面 Graphics g = Graphics.FromImage(image); try { Random r = new Random(); //清空圖片背景色 g.Clear(Color.White); //畫圖片的背景噪音線10條 for (int i = 0; i < 10; i++) { int x1 = r.Next(image.Width); int x2 = r.Next(image.Width); int y1 = r.Next(image.Height); int y2 = r.Next(image.Height); //用銀色畫出噪音線 g.DrawLine(new Pen(Color.Silver), x1, x2, y1, y2); } //畫圖片的前景噪音點50個 for (int i = 0; i < 50; i++) { int x = r.Next(image.Width); int y = r.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(r.Next())); } //畫圖片的框線 g.DrawRectangle(new Pen(Color.SaddleBrown), 0, 0, image.Width - 1, image.Height - 1); //定義繪製文字的字體 Font f = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic)); //線性漸變畫刷 System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Purple, 1.2f, true); g.DrawString(CheckCode, f, brush, 2, 2); //創建內存流用於輸出圖片 using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { //圖片格式制定爲png image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); //清除緩衝區流中的所有輸出 Response.ClearContent(); //輸出流的HTTP MIME類型設置爲“image/Png” Response.ContentType = "image/Png"; //輸出圖片的二進制流 Response.BinaryWrite(ms.ToArray()); } } finally { //釋放Bitmap對象和Graphics對象 g.Dispose(); image.Dispose(); } } }
index.aspx:
<img src="RandomImage.aspx" alt="驗證碼" id="imgRandom" />
字符串是 Java 程序中最常用的數據結構之一。在 Java 中 String 類已經重載了"+",字符串可以直接使用"+"進行連接,也可以用StringBuilder/StringBuffer(StringBuilder是J2SE5 及以
前言 面試常問的一些中間件,學習總結一下。以下環境分別使用vulhub和vulfocus復現。 Apache apache 文件上傳 (CVE-2017-15715) 描述: Apache(音譯爲阿帕奇)是世界使用排名第一的Web服務器
簡介: 搶紅包是我們生活常用的社交功能, 這個功能最主要的特點就是用戶的併發請求高, 在系統設計上, 可以使用非常多的辦法來扛住用戶的高併發請求, 在本文中簡要介紹使用Redis緩存中間件來實現搶紅包算法, Redis是一個在內存中基
輕鬆復現一張AI圖片 現在有一個非常漂亮的AI圖片,你是不是想知道他是怎麼生成的? 今天我會交給大家三種方法,學會了,什麼圖都可以手到擒來了。 需要的軟件 在本教程中,我們將使用AUTOMATIC1111 stable diffusio
@[toc] Spring Security 是一個功能強大且可高度定製的安全框架,它提供了一套完整的解決方案,用於保護基於 Spring 的應用程序。在 Spring Security 中,路徑匹配是權限控制的核心部分,它決定了哪些請求可
本文分享自華爲雲社區《如何基於香橙派AIpro將開源框架模型轉換爲昇騰模型》,作者:昇騰CANN。 在前面的介紹中,我們知道了如何基於香橙派AIpro開發AI推理應用,也大致瞭解到在推理之前,需要把原始網絡模型 (可能是 PyTorch 的
前言 Go語言定義 Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態、強類型、編譯型語言。Go 語言語法與 C 相近,但功能上有:內存安
剛剛進行了微信sessionkey的學習,正準備實戰一下,就發現了這個神奇的網站,預知後事如何。請繼續向下看去 1. 目標 2. 開局一個登錄框 3. 首先,直接弱口令走起來,萬一留有測試的賬號呢 嘗試,1311111111,1333
前端面試題 - 賦值/淺拷貝/深拷貝的區別?如何實現一個深拷貝? 賦值是拷貝的對象指針,整個對象都是共用的。 淺拷貝是拷貝一層,對象的內容仍是共用的,Object.assign(),拓展運算符都是淺拷貝。 深拷貝是遞歸拷貝深層次,JSON
在 Vue3 中,可以使用 reactive 函數創建響應式對象。這些響應式對象可以跟蹤其屬性的變化並且自動地更新視圖。但是在某些情況下,我們可能需要清空這些響應式對象。下面是一些方法來清空 Vue3 reactive。 方法一:使用 Ob
前端面試題 - 說一下原型和原型鏈? JavaScript 中,萬物皆對象,對象分爲普通對象和函數對象。 所有的函數都是函數對象(typeof f === 'function'),其他都是普通對象(typeof o === 'object'
protected function getNode(){ //$CONTROLLER_NAME = $this->_CI->router->fetch_class(); //$ACTION_NAME = $this->_
前言:授人以魚不如授人以漁.先學會用,在學原理,在學創造,可能一輩子用不到這種能力,但是不能不具備這種能力。這篇文章主要是介紹算法入門Helloword之手寫圖片識別模型java中如何實現以及部分解釋。目前大家對於人工智能-機器學習-神經網
標題:初探Java編程——開啓你的編程之旅 摘要:本文主要介紹了Java編程語言的基本概念、特點以及如何搭建Java開發環境。通過簡單的實例,讓讀者初步瞭解Java編程,爲其後續學習打下基礎。 一、Java概述 Java是一種面
鴻蒙原生應用再新丁!企查查 碧藍航線 入局鴻蒙 來自 HarmonyOS 微博13日消息,碧藍航線 將啓動鴻蒙原生應用開發,雙方將基於HarmonyOS NEXT鴻蒙星河版的原生流暢等特性,進一步提升遊戲流暢度和畫面精美度,爲用戶提供更