程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 開發基於ASP.NET WebService的圖片驗證碼服務

開發基於ASP.NET WebService的圖片驗證碼服務

編輯:關於ASP.NET

最近,工作中接到一項任務,開發一個頁面驗證碼功能,查閱了一些網上的資料,並結合以前的繪圖方面的知識,實現了如下的解決方案。生成的驗證碼效果如圖:

要解決的問題:

1. 如何隨機生成圖片

生成System.Drawing.Bitmap對象,使用System.Drawing.Graphics向位圖對象中繪圖。

2. 如何在WebService的方法中通過參數傳遞圖片數據

將Bitmap對象輸出成字節流,WebMothod使用字節數組返回該字節流。

實例:

1. 用VS.NET 2003創建一個ASP.NET Webservice工程,默認的Service名為MyService,為MyService添加一個名為GenerateVerifyImage的WebMethod。該方法的代碼如下:

/// <summary>
/// 生成圖片驗證碼
/// </summary>
/// <param name="nLen">驗證碼的長度</param>
/// <param name="strKey">輸出參數,驗證碼的內容</param>
/// <returns>圖片字節流</returns>
[WebMethod]
public byte[] GenerateVerifyImage(int nLen,ref string strKey)
{
int nBmpWidth = 13*nLen+5;
int nBmpHeight = 25;
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(nBmpWidth,nBmpHeight);

// 1. 生成隨機背景顏色

int nRed,nGreen,nBlue; // 背景的三元色
System.Random rd = new Random((int)System.DateTime.Now.Ticks);
nRed = rd.Next(255)%128+128;
nGreen = rd.Next(255)%128+128;
nBlue = rd.Next(255)%128+128;

// 2. 填充位圖背景

System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bmp);
graph.FillRectangle(new SolidBrush(System.Drawing.Color.FromArgb(nRed,nGreen,nBlue))
,0
,0
,nBmpWidth
,nBmpHeight);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved