一:上传图片加水印dom
1 加文字水印:字体
1)上传图片后 , 制做画布,将选中的图片流制做成画布,即:spa
System.Drawing.Image image = System.Drawing.Image.FromStream(FileUpload1.FileContent);code
2) 建立绘制对象,并放在画布上,即:orm
Graphics g = Graphics.FromImage(image);对象
3)在画布上画的东西,须要4个参数,分别是:blog
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;ip
总代码以下:字符串
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窗体里展现: