// GenerateImage 以圖檔產生驗證字圖形 //函數功能: GenerateImage 以圖檔產生驗證文字圖形 //傳入參數: // img_width 圖形寬度 // img_height 圖形高度 // confirm_str 驗證字串 //傳回數值: // MemoryStream 圖形資料 //備註說明: 本範例僅有 0 ~ 9 的數字圖檔,故驗證字串僅可輸入 0 ~ 9 的數字 public MemoryStream GenerateImage(int img_width, int img_height, string confirm_str) { int wlen = 0, cnt = 0, tmpwidth, tmpheight; string tmpfile = ""; // 取得網站存放圖檔的位置 string gpath = HttpContext.Current.Request.MapPath("~/images/confirm/"); // 取得字串長度 wlen = confirm_str.Length; // 建立圖片元件 Bitmap img_work = new System.Drawing.Bitmap(img_width, img_height); // 建立繪圖元件 Graphics gh_work = Graphics.FromImage(img_work); // 擷取字串內容對應的圖檔,並填入 img_work 圖片物件 for (cnt = 0; cnt < wlen; cnt++) { // 取得對應圖檔的名稱 tmpfile = gpath + confirm_str.Substring(cnt, 1) + ".gif"; // 根據檔案建立圖片物件。 using (System.Drawing.Image img_tmp = System.Drawing.Image.FromFile(tmpfile, true)) { tmpwidth = img_tmp.Width; tmpheight = img_tmp.Height; // 將圖形填入繪圖元件 gh_work.DrawImage(img_tmp, new Rectangle(cnt * tmpwidth, 0, tmpwidth, tmpheight), 0, 0, tmpwidth, tmpheight, GraphicsUnit.Pixel); } } // 建立繪圖輸出資料流 MemoryStream ms_work = new MemoryStream(); //將圖片儲存到輸出資料流 img_work.Save(ms_work, System.Drawing.Imaging.ImageFormat.Png); gh_work.Dispose(); img_work.Dispose(); return ms_work; } |