【ASP.Net】上传图片+水印

前言

上篇文章说到了在winfrom中上传图片,那么在BS里上传图片又该怎么写呢?首先要做出网页的表单,在浏览器页中选择本地上传文件,通过文件上传域,点击上传通过post,把请求报文发给服务端,然后保存在服务器磁盘上。

标题

添加一个html页面,做出表单:
给form标签加上enctype=“multipart/form-data”,这是请求报文中会有文件的内容。

<body>
    <form method="post" action="processFileUp.ashx" enctype="multipart/form-data">
        <input type="file" name="fileup"/>
        <input type="text" name="txtName" />
        <input type="submit" value="上传"/>
        <img src=""  >
        </form>
</body>

建立一般处理程序:基本文件上传代码:

     HttpPostedFile file = context.Request.Files[0];//获取上传文件
            if (file.ContentLength > 0)
            {
                //对上传的文件类型进行校验
                string fileName = Path.GetFileName(file.FileName);//获取上传文件的名称

                string fileExt = Path.GetExtension(fileName);//获取用户上传文件扩展名
                if (fileExt == ".jpg" || fileExt == ".png")
                {
                    //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));
                    else
                {
                    context.Response.Write("请选择上传文件");
                }

图片上传完了,要加个水印,在图片上写些网站或字,这样达到版权的作用,这时就要用到画图了(GDI),一般处理程序代码:

                    创建图片水印:
                    //using (Image img = Image.FromStream(file.InputStream))
                    //根据上传成功的图片创建一个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.DrawImage(img, 0, 0, img.Width, img.Height);
                                //写的是什么字,字体的样式,字体的大小,在画布的什么位置出现水印
                                g.DrawString("大米时代", new Font("黑体", 14.0f, FontStyle.Bold), Brushes.Red, new PointF(map.Width-100,map.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>");
                            }
                        }
                    }

效果展示:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值