图片上传以及水印操作的使用
1、简单的
前端:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <meta charset="utf-8" /> </head> <body> <!--enctype="multipart/form-data" :如果要上传文件必须加上该属性,制定相应的编码。只有这样用户选择的文件数据(文件流)才会放在请求报文中,发送给服务器。表单中的其它表单元素(文本框等),也会发送到服务端,但是格式也变了,但是在服务端还是按照以前的方法进行接收--> <form method="post" action="processFileUp.ashx" enctype="multipart/form-data"> <input type="file" name="fileUp"/> <input type="submit" value="上传" /> </form> </body> </html>
后端:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Drawing; namespace CZBK.ItcastProject.WebAPP._2017_11_25 { /// <summary> /// processFileUp 的摘要说明 /// </summary> public class processFileUp : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; HttpPostedFile file = context.Request.Files[0];//获取上传的文件 if (file.ContentLength != 0) { //对上传的文件类型进行校验。 string fileName = Path.GetFileName(file.FileName);//获取上传文件的名称包含扩展名。 string fileExt = Path.GetExtension(fileName);//获取用户上传的文件扩展名。 if (fileExt == ".jpg") { //1、对上传文件进行重命名? string newfileName = Guid.NewGuid().ToString(); //2、将上传的文件放在不同的目录下面? string dir = "/ImageUpload/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/"; //创建文件夹 if (!Directory.Exists(context.Request.MapPath(dir))) { Directory.CreateDirectory(context.Request.MapPath(dir)); } string fullDir = dir + newfileName + fileExt; file.SaveAs(context.Request.MapPath(fullDir)); //file.SaveAs(context.Request.MapPath("/ImageUpload/" + fileName));//完成文件的保存。 //创建图片的水印 //using(Image img = Image.FromFile(context.Request.MapPath(fullDir))) //根据上传成功的图片创建一个Image using (Image img = Image.FromFile(context.Request.MapPath(fullDir))) { using (Bitmap map = new Bitmap(img.Width,img.Height))//根据画布的高度与宽度创建画布 { //为画布创建画笔 using (Graphics g = Graphics.FromImage(map)) { //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //用画笔在画布上画图,从画布的左上角开始,将整个图片画到画布 g.DrawImage(img, 0, 0, img.Width, img.Height); g.DrawString("传智播客", new Font("黑体", 14.0f, FontStyle.Bold), Brushes.Red, new PointF(img.Width - 100, img.Height - 25)); string waterImageName = "water_" + Guid.NewGuid().ToString(); map.Save(context.Request.MapPath("/ImageUpload/" + waterImageName + ".jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); context.Response.Write("<html><body><img src='/ImageUpload/" + waterImageName +".jpg'/></body></html>"); } } } } else { context.Response.Write("只能上传图片文件"); } } else { context.Response.Write("请选择上传文件"); } } public bool IsReusable { get { return false; } } } }
浙公网安备 33010602011771号