webform:图片水印验证码制作

Posted 丶白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webform:图片水印验证码制作相关的知识,希望对你有一定的参考价值。

一、图片水印

1:引命名空间System.Drawing;

前端代码

<div>
    <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="上传" /><br />
        <asp:Image ID="Image1" runat="server" />
</div>

后台代码

//准备画布
        System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent);
        //创建画笔
        Graphics g = Graphics.FromImage(img);

        string s = "汉企奇点网络0928";
        //画笔的字体
        Font f = new Font("微软雅黑",20);
        //画笔的样式和颜色
        Brush b = new SolidBrush(Color.Red);
        //在什么位置画
        PointF p = new PointF(20,20);
        //画字符串
        g.DrawString(s, f, b, p);

        string sss = "images/"+DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName;

        img.Save(Server.MapPath(sss));

        Image1.ImageUrl = sss;

二、图片验证码

1:引命名空间System.Drawing;

单独创建一个窗体来绘制验证码

后台代码

protected void Page_Load(object sender, EventArgs e)
    {
        Bitmap img = new Bitmap(80, 40);
        Graphics g = Graphics.FromImage(img);
        Random r = new Random();
        //创建一个颜色集合 或者也可以通过RGBA颜色直接随机生成
        List<Color> clist = new List<Color>();
        clist.Add(Color.Yellow);
        clist.Add(Color.Green);
        clist.Add(Color.Blue);
        clist.Add(Color.Pink);
        clist.Add(Color.Orange);
        clist.Add(Color.Black);
        //绘制背景色
        g.FillRectangle(new SolidBrush(clist[r.Next(0, clist.Count)]), 0, 0, 80, 40);
        //循环随机绘制干扰线
        for (int i = 0; i < 10; i++)
        {
            Color ccc = clist[r.Next(0, clist.Count)];

            Pen ppp = new Pen(new SolidBrush(ccc), r.Next(1, 5));

            g.DrawLine(ppp, new PointF(r.Next(0, 80), r.Next(0, 40)), new PointF(r.Next(0, 80), r.Next(0, 40)));
        }
        //准备一些字母数字
        string all = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        string s = "";
        //从上面随机出四个字符拼接
        for (int i = 0; i < 4; i++)
        {
            int a = r.Next(all.Length);
            s += all.Substring(a, 1);
        }
        //存入Session
        Session["YZM"] = s;
        //绘制出验证码
        g.DrawString(s, new Font("微软雅黑", 16), new SolidBrush(Color.Red), new PointF(3, 3));
        //通过流把绘制好的验证码输出出去
        img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
        Response.End();
    }

界面接收

void Button1_Click(object sender, EventArgs e)
    {
        string t1 = TextBox1.Text;
        string t2 = Session["YZM"].ToString();

        if (t1.ToUpper() == t2.ToUpper())
        {
            Label1.Text = "验证成功!";
        }
        else
        {
            Label1.Text = "验证失败!";
        }
    }

重新生成验证码(JS)

<script type="text/javascript">
    var a = 0;
    document.getElementById("Image1").onclick = function () {
        this.setAttribute("src", "yzm.aspx?id=" + a);
        a++;
    }
</script>

 

以上是关于webform:图片水印验证码制作的主要内容,如果未能解决你的问题,请参考以下文章

C#-WebForm-★ 制作图片验证码 ★

图片上传,图片加水印,验证码制作

#.NET使用HttpHandle对象实现水印和验证码

#.NET使用HttpHandle对象实现水印和验证码

#.NET使用HttpHandle对象实现水印和验证码

#.NET使用HttpHandle对象实现水印和验证码