/// <summary>產生圖形驗證的圖片</summary>
[WebMethod(EnableSession = true)]
public string CreateCaptcha() {
// 存放用來產生亂數的檔名規則
string[] Codes = "A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z,2,3,4,5,6,7,8,9".Split(',');
// 存放產生亂數後的檔名
string CaptchaCode = "";
// 宣告一個亂數個體
Random RadomCode = new Random();
// 用來存放最後壓縮產生出來的驗證圖片
Image[] CaptchaData = null;
// 用來存放最後產生出來的驗證圖片
Image ImageCaptcha = null;
// 用來存放亂數產生出來的圖形
List<Image> CaptchaImage = new List<Image>();
// 用來存放驗證碼
string VerifyCode = "";
// 用來存放轉陣列的圖片
byte[] imageBytes = null;
// 用來存放Base64 Code
string Base64String = "";
// 加入底圖
CaptchaImage.Add(Image.FromFile(Server.MapPath("~/") + "/Images/VerifyImage/Background.png"));
// 亂數產生4張圖片
for (int Index = 1; Index <= 4; Index++) {
// 亂數產生檔名
CaptchaCode += Codes[RadomCode.Next(32)];
// 紀錄驗證碼
VerifyCode += CaptchaCode;
// 產生出檔名並找到指定位置檔案存放至List
CaptchaImage.Add(Image.FromFile(Server.MapPath("~/") + "/Images/VerifyImage/" + Index + CaptchaCode + ".png"));
// 清空暫存資訊
CaptchaCode = "";
}
// 把圖片List轉成Array
CaptchaData = CaptchaImage.ToArray();
// 合併圖片
ImageCaptcha = this.UniteImage(100, 30, CaptchaData);
// 紀錄驗證碼到session
HttpContext.Current.Session[SessionKey.Captcha] = VerifyCode;
// 使用MemoryStream存放圖片
using (MemoryStream MemoryStr = new MemoryStream()) {
// 將圖檔存進MemoryStream並指定格式為png
ImageCaptcha.Save(MemoryStr, ImageFormat.Png);
// 將圖檔轉陣列存入
imageBytes = MemoryStr.ToArray();
// 將圖片轉成Base64並存放入Base64String字串中
Base64String = Convert.ToBase64String(imageBytes);
// 回傳字串
return Base64String;
}
}
/// <summary>合併圖片</summary>
/// <param name="paramWidth">傳入合併後的圖片寬度</param>
/// <param name="paramHeight">傳入合併後的圖片高度</param>
/// <param name="paramImgs">傳入要合併的圖片陣列</param>
/// <returns>將回傳整合後的圖片</returns>
public System.Drawing.Image UniteImage(Int32 paramWidth, Int32 paramHeight, System.Drawing.Image[] paramImgs) {
//用來紀錄要回傳的圖片
System.Drawing.Image ReturnImg = new System.Drawing.Bitmap(paramWidth, paramHeight);
//用來處理整合圖像的物件
System.Drawing.Graphics GraphicsTemp = System.Drawing.Graphics.FromImage(ReturnImg);
//指定要清除的色系
GraphicsTemp.Clear(System.Drawing.Color.Transparent);
//加入圖案
for (Int32 Index = 0; Index <= paramImgs.GetLength(0) - 1; Index++) {
GraphicsTemp.DrawImage(paramImgs[Index], 0, 0, paramImgs[Index].Width, paramImgs[Index].Height);
}
return ReturnImg;
}
2014年11月12日 星期三
訂閱:
張貼留言 (Atom)
[Laravel]環境架設,使用docker + laradock
1.選擇使用docker + laradock在windows10的環境使用 先至 docker官方網站 下載 docker for windows 2.依照執行程式下載安裝 這邊我的電腦有遇到一些問題順便記錄下來, 在下載啟動docker時發生錯誤 Hardw...
-
首先html部分 <div class="header" style="height:300px;"> </div> <section class="section section--menu...
-
圖片上傳在本機測試沒有問題 可是佈署到IIS上面去之後發現無法上傳檔案 參考解決方案: 一開起便懷疑是檔案資料夾權限不夠導致上傳失敗 上網查詢後發現 『IUSR_MachineName』 匿名存取時 IIS 所使用的身份識別 IIS 讀取任何靜態檔案時,預...
-
woocommerce 3.0升級上去後,在product image gallery這邊有了非常大的變化。 2.6以前在"設定"->"商品"選項裡可以選擇的燈箱效果拿掉了, 導致商品頁的lightbox等效果通通失效。 主...
沒有留言:
張貼留言