一:上传图片加水印

    1   加文字水印:

          1)上传图片后 , 制作画布,将选中的图片流制作成画布,即:

             System.Drawing.Image image = System.Drawing.Image.FromStream(FileUpload1.FileContent);

         2) 创建绘制对象,并放在画布上,即:

             Graphics g = Graphics.FromImage(image);

         3)在画布上画的东西,需要4个参数,分别是:

              1)画的什么东西,例:画字体即

                    string s = "www.fuchunju.com";
              2)用什么字体,多大字号,即:
                  Font f = new Font("微软雅黑", 50);
              3)用什么颜色,什么样画笔例如实体,红色画笔
                    Brush b = new SolidBrush(Color.Red);
             4)在画布的那个位置,第一个代表x轴,第二个参数代表y轴;例x轴10,y轴20即
                 Point p = new Point(10, 20);
             5) 将画的东西参数放在画布上
               g.DrawString(s, f, b, p);
            6)上传到文件夹,即:
                image.Save(Server.MapPath(path));
              顺便通过image控件浏览一下,即将路径赋给控件image1
               Image1.ImageUrl=path;

          总代码如下:

  private void Button1_Click(object sender, EventArgs e)
    {
       
      string[] ns=FileUpload1.FileName.Split('.'); //将文件名以'.'拆分
        if (ns[ns.Length - 1] == "aspx" || ns[ns.Length - 1] == "asp" || ns[ns.Length - 1] == "avi") //判断上传文件的类型
        {
            Response.Write("<script> alert('不被允许上传的文件类型') ;</script>");
            return ; //阻止,不让继续执行下边代码
        }

        string path = "Upload/"+DateTime.Now.ToString("yyyMMddHHmmssms")+FileUpload1.FileName;//1 制作画布,将选中的图片流制作成画布,即:
        System.Drawing.Image image = System.Drawing.Image.FromStream(FileUpload1.FileContent);
        // 2 引用命名空间创建绘制对象,并放在画布上
        using System.Drawing;
        Graphics g = Graphics.FromImage(image);
        //在画布上画的东西,需要4个参数,分别是:
        //1)画的什么东西,例:画字体即
        string s = "www.fuchunju.com";
        //2)用什么字体,多大字号
        Font f = new Font("微软雅黑", 50);
        //3)用什么颜色,什么样画笔例如实体,红色画笔
        Brush b = new SolidBrush(Color.Red);
        //4)在画布的那个位置,第一个代表x轴,第二个参数代表y轴;例x轴10,y轴20即
        Point p = new Point(10, 20);
        //将画的东西参数放在画布上
        g.DrawString(s, f, b, p);
        //上传到文件夹,即:
        image.Save(Server.MapPath(path));
        //顺便通过image控件浏览一下,即将路径赋给控件image1
        Image1.ImageUrl=path;
        
    }

 

效果图如下:

   2) logo水印:

     首先将logo图片放在文件夹,仍旧用画布所以仍需引用空间即:

      using.system.drawing

    然后写如下代码:

private void Button1_Click(object sender, EventArgs e)
    {

        string[] ns = FileUpload1.FileName.Split('.'); //将文件名以'.'拆分
        if (ns[ns.Length - 1] == "aspx" || ns[ns.Length - 1] == "asp" || ns[ns.Length - 1] == "avi") //判断上传文件的类型
        {
            Response.Write("<script> alert('不被允许上传的文件类型') ;</script>");
            return; //阻止,不让继续执行下边代码
        }
        string path = "Upload/" + DateTime.Now.ToString("yyyMMddHHmmssms") + FileUpload1.FileName;                                                                    //  FileUpload1.SaveAs(end);          //执行上传命令
        //1 制作画布,将选中的图片流制作成画布,即:
        System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent);
        // 2 创建绘制对象,并放在画布上
        Graphics g = Graphics.FromImage(img);
        //画布参数的位置参数;
        PointF p = new PointF(10, 20);
        //将文件夹里的logo图片取出来即:
        System.Drawing.Image logo = System.Drawing.Image.FromFile(Server.MapPath("Upload/dota2logo.png"));
        //将图片放在画布上的图片上
        g.DrawImage(logo,p);
        //上传保存
        img.Save(Server.MapPath(path));
        //浏览
        Image1.ImageUrl = path;
}

效果图如下:

 

 3 图片验证码:

       1)仍旧引用命名空间:

         using. system.drawing;

       2) 然后创建一个default窗体并写以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //1准备宽100高50的图片画布即:
        Bitmap bm = new Bitmap(100, 50);     
        Graphics g = Graphics.FromImage(bm);        //在这个画布上画东西
        List<Color> clist = new List<Color>();      //颜色集合
        clist.Add(Color.Red);                       //往颜色集合里添加颜色
        clist.Add(Color.Orange);
        clist.Add(Color.Green);
        clist.Add(Color.Blue);
        clist.Add(Color.LightGray);
        clist.Add(Color.Yellow);
        clist.Add(Color.DarkGreen);
    

        string ss = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";  //字符串ss的内容  
        string s = "";                                                                 //验证码
        Random r = new Random();                                                       //随机数
        Color bkcolor = clist[r.Next(0, clist.Count)];                                //从颜色集合里取出一个颜色作为集合
        clist.Remove(bkcolor);                                                        // 从颜色集合里移除这个颜色,然后剩下的供字体用
        g.FillRectangle(new SolidBrush(bkcolor), 0, 0, 100,50);                       //画一个矩形作为背景

       

        for (int a = 0; a< 4; a++)
         {
            s += ss[r.Next(0, ss.Length)];              //从字符串ss的内容里随机取几个四个数作为验证码
            
        }
        Session["yzm"] = s;


        Brush b =new  SolidBrush(clist[r.Next(0,clist.Count)]);  // 画刷用实体,颜色从颜色集合里随机取
        Font f = new Font("微软雅黑", 20);                       //字体颜色,字号
        Pen p = new Pen(new SolidBrush(clist[r.Next(0, clist.Count)]),r.Next(1,3)); //划线所用的笔的颜色,粗细
        for (var i = 0; i < 5; i++) {                                           //5条干扰线
            Point p1 = new Point(r.Next(0, 100), r.Next(0, 50));               // 干扰线开始位置
            Point p2 = new Point(r.Next(0, 100), r.Next(0, 50));               //干扰线结束位置
            g.DrawLine(p, p1, p2);                                             //画干扰线
        }
        g.DrawString(s,f,b,5,5);                                              //画验证码
        bm.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//用jpeg的格式保存到流里


    }
}

      再在另一个default窗体里展示: