zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    排序算法总结
    NAT协议 私有和公有ip如何相互转换。
    Redis的两种持久化方式
    分布式系统CAP理论
    常见容错机制:failover、failfast、failback、failsafe
    Redis分布式锁的正确实现方式
    Ticket机制
    微信小程序网络请求封装
    js+ajax 上传多图片,并删除
    js+ajax 上传单图片
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6260135.html
Copyright © 2011-2022 走看看