在form表单写的代码(客户端源码)
‘FileUpload’控件:选择文件用的,点击可以选择文件
‘Image’控件:展示图片用的,所选的文件在这里展示
accept=".jpg,.png,.jpeg"图片文件加限制的属性
<form id="form1" runat="server"> ???????<asp:FileUpload ID="FileUpload1" runat="server" accept=".jpg,.png,.jpeg" /> ???????<asp:Button ID="Button1" runat="server" Text="上传" /> ???????<asp:Image ID="Image1" runat="server" /> ???</form>
在后台服务端写按钮的点击事件
‘FileUpload1.SaveAs(这里面放的是一个路径);’
新建一个文件夹,把所有的上传文件都放在这个文件夹里
//判断控件是否选中,如果是非选中的话,直接‘return’走 ???????if (!FileUpload1.HasFile) return; ???????//为了防止重名的问题,在前面加上上传的时间 ???????string path = "uploads/"+DateTime.Now.ToString("yyyyMMddHHssms")+FileUpload1.FileName; ???????//Server.MapPath()路径映射,映射成绝对路径,把谁映射?把‘path’映射 ???????FileUpload1.SaveAs(Server.MapPath(path)); ???????//上传上之后,在界面上展示出来 ???????Image1.ImageUrl = path; ??????//这里是相对路径
以上是文件的基本上传,还没有加上水印
图片水印:
using System.Drawing; 首先的先引用一个画画的类(命名空间)这样可以使用各种画画的类,进行画画
然后,准备画布:System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent);
画画是在哪里画 :Graphics g = Graphics.FromImage(img);
protected void Page_Load(object sender, EventArgs e) ???{ ???????Button1.Click += Button1_Click; ???} ???void Button1_Click(object sender, EventArgs e) ???{ ???????if (!FileUpload1.HasFile) return; ???????//画布 ???????System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent); ???????//在哪张图上画 ???????Graphics g = Graphics.FromImage(img); ???????//要画什么东西(内容) ???????string s = "汉企奇点网络0504专用章"; ???????//字体 ???????Font f = new Font("黑体", 20); ???????//画笔 ???????Brush b = new SolidBrush(Color.Red); ???????//坐标轴 ???????PointF p = new PointF(10, 10); ???????//把参数放上 ???????g.DrawString(s,f,b,p); ???????string path = "uploads/" + DateTime.Now.ToString("yyyyMMddHHmmssms") + FileUpload1.FileName; ???????img.Save(Server.MapPath(path)); ???????Image1.ImageUrl = path; ???}
如果是把两张图片进行叠加的话,需要改一个属性
g.DrawString()改成 g.DrawImage()
//两张图片叠加 ???????g.DrawImage(System.Drawing.Image.FromFile(Server.MapPath("uploads/222.png")), p);
文件上传加水印
原文地址:http://www.cnblogs.com/yunpeng521/p/7469860.html