<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                1、幫助類 ``` using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Web; namespace NetWing.Common { public class VcodeImageCreator2 { #region 驗證碼長度(默認6個驗證碼的長度) int length = 6; /// <summary> /// 驗證碼長度(默認6個驗證碼的長度) /// </summary> public int Length { get { return length; } set { length = value; } } #endregion #region 是否使用扭曲效果 bool isTwist = false; /// <summary> /// 是否使用扭曲效果 true使用 false不使用,默認為false /// </summary> public bool IsTwist { get { return isTwist; } set { isTwist = value; } } #endregion #region 驗證碼字體大小(為了顯示扭曲效果,默認40像素,可以自行修改) int fontSize = 40; public int FontSize { get { return fontSize; } set { fontSize = value; } } #endregion #region 邊框補(默認1像素) int padding = 2; public int Padding { get { return padding; } set { padding = value; } } #endregion #region 是否輸出燥點(默認不輸出) bool chaos = true; /// <summary> /// 是否輸出燥點(默認不輸出) /// </summary> public bool Chaos { get { return chaos; } set { chaos = value; } } #endregion #region 輸出燥點的顏色(默認灰色) Color chaosColor = Color.LightGray; /// <summary> /// 輸出燥點的顏色(默認灰色) /// </summary> public Color ChaosColor { get { return chaosColor; } set { chaosColor = value; } } #endregion #region 自定義背景色(默認白色) Color backgroundColor = Color.White; public Color BackgroundColor { get { return backgroundColor; } set { backgroundColor = value; } } #endregion #region 自定義隨機顏色數組 Color[] colors = { Color.Black, Color.Red, Color.DarkBlue,Color.Fuchsia, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; public Color[] Colors { get { return colors; } set { colors = value; } } #endregion #region 自定義字體數組 string[] fonts = { "Arial", "Georgia" }; public string[] Fonts { get { return fonts; } set { fonts = value; } } #endregion #region 字符類型 string codetype = "1"; /// <summary> /// 要驗證碼的形式,1=純數字 2=純字母 3=大全 /// </summary> public string CodeType { set { codetype = value; } get { return codetype; } } #endregion #region 自定義隨機碼字符串序列(使用逗號分隔) string codeSerial = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; /// <summary> /// 自定義隨機碼字符串序列(使用逗號分隔) /// </summary> public string CodeSerial { get { switch (codetype) { case "1": codeSerial = "0,1,2,3,4,5,6,7,8,9"; break; case "2": codeSerial = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; break; case "3": codeSerial = "1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"; break; default: codeSerial = "0,1,2,3,4,5,6,7,8,9"; break; } return codeSerial; } } #endregion #region 產生波形濾鏡效果 private const double PI = 3.1415926535897932384626433832795; private const double PI2 = 6.283185307179586476925286766559; /// <summary> /// 正弦曲線Wave扭曲圖片 /// </summary> /// <param name="srcBmp">圖片路徑</param> /// <param name="bXDir">如果扭曲則選擇為True</param> /// <param name="nMultValue">波形的幅度倍數,越大扭曲的程度越高,一般為3</param> /// <param name="dPhase">波形的起始相位,取值區間[0-2*PI)</param> /// <returns></returns> public System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) { System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); // 將位圖背景填充為白色 System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); graph.Dispose(); double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width; for (int i = 0; i < destBmp.Width; i++) { for (int j = 0; j < destBmp.Height; j++) { double dx = 0; dx = bXDir ? (PI2 * (double)j) / dBaseAxisLen : (PI2 * (double)i) / dBaseAxisLen; dx += dPhase; double dy = Math.Sin(dx); // 取得當前點的顏色 int nOldX = 0, nOldY = 0; nOldX = bXDir ? i + (int)(dy * dMultValue) : i; nOldY = bXDir ? j : j + (int)(dy * dMultValue); System.Drawing.Color color = srcBmp.GetPixel(i, j); if (nOldX >= 0 && nOldX < destBmp.Width && nOldY >= 0 && nOldY < destBmp.Height) { destBmp.SetPixel(nOldX, nOldY, color); } } } return destBmp; } #endregion #region 生成校驗碼圖片 /// <summary> /// 生成字符驗證碼圖片 /// </summary> /// <param name="code">字符</param> /// <returns></returns> public Bitmap CreateImageCode(string code) { int fSize = FontSize; int fWidth = fSize + Padding; int imageWidth = (int)(code.Length * fWidth) + 4 + Padding * 2; int imageHeight = fSize * 2 + Padding; System.Drawing.Bitmap image = new System.Drawing.Bitmap(imageWidth, imageHeight); Graphics g = Graphics.FromImage(image); g.Clear(BackgroundColor); Random rand = new Random(); //給背景添加隨機生成的燥點 if (this.Chaos) { Pen pen = new Pen(ChaosColor, 0); int c = Length * 30; for (int i = 0; i < c; i++) { int x = rand.Next(image.Width); int y = rand.Next(image.Height); g.DrawRectangle(pen, x, y, 0.5f, 0.5f); } } int left = 0, top = 0, top1 = 1, top2 = 1; int n1 = (imageHeight - FontSize - Padding * 2); int n2 = n1 / 4; top1 = n2; top2 = n2 * 2; Font f; Brush b; int cindex, findex; //隨機字體和顏色的驗證碼字符 for (int i = 0; i < code.Length; i++) { cindex = rand.Next(Colors.Length - 1); findex = rand.Next(Fonts.Length - 1); f = new System.Drawing.Font(Fonts[findex], fSize, System.Drawing.FontStyle.Bold); b = new System.Drawing.SolidBrush(Colors[cindex]); if (i % 2 == 1) { top = top2; } else { top = top1; } left = i * fWidth; g.DrawString(code.Substring(i, 1), f, b, left, top); } //畫一個邊框 邊框顏色為Color.Gainsboro g.DrawRectangle(new Pen(Color.Gainsboro, 0), 0, 0, image.Width - 1, image.Height - 1); g.Dispose(); //產生波形 if (isTwist) image = TwistImage(image, true, 8, 4); return image; } /// <summary> /// 禁用緩存 /// </summary> /// <param name="context">httpcontext</param> private static void DisableHttpCache(System.Web.HttpContext context) { ////清除http緩存 context.Response.ClearHeaders(); context.Response.ClearContent(); ////禁用http緩存 //// http 1.1 context.Response.AddHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); context.Response.AddHeader("Cache-Control", "no-store, no-cache, max-age=0, must-revalidate"); //// http 1.0 context.Response.AddHeader("Pragma", "no-cache"); } #endregion #region 將創建好的圖片輸出到頁面 /// <summary> /// 將創建好的圖片輸出到頁面 /// </summary> /// <param name="code">驗證碼字符串</param> /// <param name="context"></param> public void CreateImageOnPage(string code, HttpContext context) { System.IO.MemoryStream ms = new System.IO.MemoryStream(); Bitmap image = this.CreateImageCode(code); image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); context.Response.ClearContent(); context.Response.ContentType = "image/png"; context.Response.BinaryWrite(ms.GetBuffer()); ms.Close(); ms = null; image.Dispose(); image = null; } #endregion #region 生成隨機字符碼 public string CreateVerifyCode(int codeLen) { if (codeLen == 0) { codeLen = Length; } string[] arr = CodeSerial.Split(','); string code = ""; int randValue = -1; Random rand = new Random(unchecked((int)DateTime.Now.Ticks)); for (int i = 0; i < codeLen; i++) { randValue = rand.Next(0, arr.Length - 1); code += arr[randValue]; } return code; } public string CreateVerifyCode() { return CreateVerifyCode(0); } #endregion } } ``` # 使用 ``` VcodeImageCreator2 v2 = new VcodeImageCreator2(); //這些參數,不一定設置 v2.Length = 4;//int 驗證碼長度6 v2.IsTwist = true;//是否使用扭曲效果 v2.FontSize = 50;//驗證碼字體大小,默認為40 v2.Padding = 2;//驗證碼邊框大小默認為2 v2.Chaos = true;//是否輸出造點 v2.ChaosColor = Color.BurlyWood;//輸出燥點的顏色(默認灰色) v2.BackgroundColor = Color.White;//自定義背景色(默認白色) v2.CodeType = "3";//1=純數字 2=純字母 3=大全 //這些參數,不一定設置 string k = v2.CreateVerifyCode();//產生驗證碼字符 //驗證碼輸出不包含業務邏輯,這里寫k 的邏輯,可以存入cookies或者session //Response.Write(k);//返回數字如:158288 v2.CreateImageOnPage(k, Context);//驗證碼輸出到瀏覽器 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看