產生驗證碼映像

來源:互聯網
上載者:User

#region 產生驗證碼映像
    private MemoryStream GetImages(int ImageWidth, int FontSize, int CharNumber, string BackgroundColor)
    {
        int ImageHeight = 5;
        Bitmap TempBitmap;
        Graphics TempGraphics;
        Color ColorBack = ColorTranslator.FromHtml(BackgroundColor);
        TempBitmap = new Bitmap(ImageWidth, 4 * ImageHeight, PixelFormat.Format24bppRgb);
        TempGraphics = Graphics.FromImage(TempBitmap);
        TempGraphics.FillRectangle(new SolidBrush(ColorBack), new Rectangle(0, 0, ImageWidth, 5 * ImageHeight));
        string ImageNumber = null, ShowCode = null;
        Color ColorFont;
        int ShowCodeFontSize;
        Font ShowCodeFont;
        Rnd = new Random();
        for (int i = 0; i < CharNumber; i++)
        {
            ShowCode = GetChar();
            ImageNumber += ShowCode;
            ShowCodeFontSize = Convert.ToInt32(3 * Rnd.NextDouble() + (FontSize - 2));
            ColorFont = ColorTranslator.FromHtml(GetColor());
            ShowCodeFont = new Font("Verdana", ShowCodeFontSize, FontStyle.Bold);
            TempGraphics.DrawString(ShowCode, ShowCodeFont, new SolidBrush(ColorFont), Convert.ToInt32(FontSize / 2) + i * FontSize, Convert.ToInt32(ImageHeight * 0.125 * Rnd.NextDouble() + ImageHeight * 0.08));
        }
        StrCode = ImageNumber.Trim();
        FontSize = FontSize * 4;
        ImageHeight = Convert.ToInt32(2.5 * FontSize);
        MemoryStream TempStream = new MemoryStream();
        TempBitmap.Save(TempStream, ImageFormat.Gif);
        TempGraphics.Dispose();
        TempBitmap.Dispose();
        TempStream.Close();
        return TempStream;
    }

    private void ShowImage(MemoryStream ShowStream)
    {
        Response.ClearContent();
        Response.ContentType = "image/gif";
        Response.BinaryWrite(ShowStream.ToArray());
    }

    private string GetChar()
    {
        char[] CharArray = new char[2];
        CharArray[0] = (char)(48 + Rnd.Next(0, 10));
        CharArray[1] = (char)(65 + Rnd.Next(0, 6));
        return CharArray[Rnd.Next(0, 2)].ToString();
    }

    private string GetColor()
    {
        int ColorR, ColorG, ColorB;
        ColorR = 20 + Rnd.Next(0, 180);
        ColorG = 20 + Rnd.Next(0, 180);
        ColorB = 20 + Rnd.Next(0, 180);
        if (ColorR > 150 && ColorR > 150 && ColorR > 150)
        {
            ColorR = 20 + Rnd.Next(0, 150);
        }
        return "#" + Convert.ToString(ColorR, 16) + Convert.ToString(ColorG, 16) + Convert.ToString(ColorB, 16);
    }
    #endregion

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.