zuoridewo

前台页面显示:

一般出来程序之图片文件上传及加水印

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <form method="post" action="ProcessFileUp.ashx" enctype="multipart/form-data">
        <input type="file" name="fileUp" />
        <input type="submit" value="上传" />

    </form>
</body>
</html>
FileUp Code

一般处理程序代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Drawing;
 4 using System.IO;
 5 using System.Linq;
 6 using System.Web;
 7 
 8 namespace JMH.StudyProject.WebApp._2018_3_27
 9 {
10     /// <summary>
11     /// ProcessFileUp 的摘要说明
12     /// </summary>
13     public class ProcessFileUp : IHttpHandler
14     {
15 
16         public void ProcessRequest(HttpContext context)
17         {
18             context.Response.ContentType = "text/html";
19             HttpPostedFile file = context.Request.Files[0];//获取上次单个文件
20             //HttpFileCollection  fileCollection = context.Request.Files;/获取上次多个文件
21             if (file.ContentLength>0)
22             {
23                 //对上传文件类型进行校验
24                 string fileName = Path.GetFileName(file.FileName);//获取上传文件的名称包含扩展名
25                 string fileExt = Path.GetExtension(fileName);//获取上传文件扩展名
26                 List<string> fileExtList = new List<string>() {
27                     ".jpg",
28                     ".jpeg",
29                     ".gif",
30                     ".png"
31                 };
32                 if (fileExtList.Contains(fileExt))
33                 {
34                     //1.对上传文件进行重命名(文件流的md5或者guid)
35                     string newfileName = Guid.NewGuid().ToString();
36                     //2.将上传的文件放在不同的目录下面
37                     string dir = "/ImageUpload/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";
38                     if (!Directory.Exists(context.Request.MapPath(dir)))
39                     {
40                         Directory.CreateDirectory(context.Request.MapPath(dir));
41                     }
42 
43                     string fullDir = dir + newfileName + fileExt;//文件存放的完整路径
44                     //保存上传图片
45                     file.SaveAs(context.Request.MapPath(fullDir));
46 
47                     //file.SaveAs(context.Request.MapPath("/ImageUpload/" + fileName));//完成文件的保存
48 
49                     //创建图片的水印
50                     // using (Image img=Image.FromStream(file.InputStream))
51                     //根据上传成功的图片创建一个Image
52                     using (Image img = Image.FromFile(context.Request.MapPath(fullDir)))
53                     {
54                         using (Bitmap map = new Bitmap(img.Width,img.Height))//根据上传图片的高度和宽度创建画布
55                         {
56                             //为画布创建画笔
57                             using (Graphics g = Graphics.FromImage(map))
58                             {
59                                 //用画笔在画布上画图,从画布的左上角开始,将图片画到画布
60                                 g.DrawImage(img,0,0,img.Width,img.Height);
61                                 g.DrawString("水印图片",new Font("黑体",14.0f,FontStyle.Bold),Brushes.Red,new PointF(map.Width-80,map.Height-25));
62                                 //在同一目录下保存上传图片的水印图片
63                                 string waterImageName = dir + newfileName + "_water";
64                                 map.Save(context.Request.MapPath(waterImageName + ".jpg"),System.Drawing.Imaging.ImageFormat.Jpeg);
65 
66                                 context.Response.Write("<html><body><img src=\'"+ waterImageName + ".jpg\'/></body></html>");
67                             }
68                         } 
69                     }
70                     
71                 }
72                 else
73                 {
74                     context.Response.Write("只能上传图片文件");
75                 }
76             }
77             else {
78                 context.Response.Write("请选择上传文件");
79             }
80             
81         }
82 
83         public bool IsReusable
84         {
85             get
86             {
87                 return false;
88             }
89         }
90     }
91 }
ProcessUpload Code

 

 

 

posted on 2018-03-27 12:00  zuoridewo  阅读(295)  评论(0编辑  收藏  举报

分类:

技术点:

相关文章: