今天讲一个上传图片添加水印的方法,直接上代码吧

protected void Button1_Click(object sender, EventArgs e)
    {
        int location = Convert.ToInt32(this.DropDownList1.SelectedValue);//获取水印放置位置

//判断FileUpload里是否有文件地址
        if (FileUpload1.HasFile)
        {
            if ((FileUpload1.PostedFile.ContentType == "image/pjpeg") || (FileUpload1.PostedFile.ContentType == "image/jpeg") || (FileUpload1.PostedFile.ContentType == "image/gif") || (FileUpload1.PostedFile.ContentType == "image/bmp") || (FileUpload1.PostedFile.ContentType == "image/x-png") || (FileUpload1.PostedFile.ContentType == "image/png"))//获取客户端发送的文件的MIME内容类型
            {
                //上传文件总大小
                int fileLength = 0;
                fileLength = fileLength + FileUpload1.PostedFile.ContentLength;
                //大小不能超过maxLengthk
                int maxLength = 2048;
                int sysLength = maxLength * 1024;
                if (fileLength > sysLength)
                {
                   Response.Write("<script>alert(''''该图片大小超过2M限制'''')</script>");
                }
                else
                {
                    string[] strSpil = FileUpload1.FileName.Split(''''.'''');//将此地址用.号进行分割(img/1.jpg)
                    string strEnd = strSpil[strSpil.Length - 1].ToLower();//得到后面的("jpg", "gif", "bmp", "png","jpeg","JPG","GIF","BMP","PNG","JPEG")
                    string[] strPic = new string[] { "jpg", "gif", "bmp", "png", "jpeg", "JPG", "GIF", "BMP", "PNG", "JPEG" };//定义一个数组里面放文件格式 
                    List<string> arry = new List<string>();
                    arry.AddRange(strPic);  //定义一个可变数组,用于放文件格式
                    if (arry.Contains(strEnd))//判断这个数组中是否有("jpg", "gif", "bmp", "png","jpeg","JPG","GIF","BMP","PNG","JPEG") 
                    {
                        Random rand = new Random();//定义一个随机数,为了防止你要上传得图片重名 
                        string strName = DateTime.Now.ToString("yyyymmmddhhss") + rand.Next(100, 9999).ToString();//得到不同得名字
                        string strPointEnd = "." + strEnd;
                        string strFile = Server.MapPath("~/upfile");//获取其相对地址
                        FileUpload1.SaveAs(strFile + "/" + strName + strPointEnd);//保存原始图片
                        string src = strFile + "/" + strName + strPointEnd;

//进行水印添加处理--------------------------------------------
                        //水印图片
                        string shuiyin = "~/watermark/logo.png";
                        //加载文件
                        System.Drawing.Image Cover;
                        Cover = System.Drawing.Image.FromFile(src);
                        //加载水印文件
                        System.Drawing.Image water = System.Drawing.Image.FromFile(Request.MapPath(shuiyin));
                        //创建画布
                        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(Cover);
                        if (location == 1)//左上方
                        {
                            //在image上绘制水印
                            g.DrawImage(water, new Rectangle(0, 0, water.Width, water.Height), 0, 0, water.Width, water.Height, GraphicsUnit.Pixel);
                        }
                        else if (location == 2)//左下方
                        {
                            //在image上绘制水印
                            g.DrawImage(water, new Rectangle(0, Cover.Height - water.Height, water.Width, water.Height), 0, 0, water.Width, water.Height, GraphicsUnit.Pixel);
                        }
                        else if (location == 3)//右上方
                        {
                            //在image上绘制水印
                            g.DrawImage(water, new Rectangle(Cover.Width - water.Width, 0, water.Width, water.Height), 0, 0, water.Width, water.Height, GraphicsUnit.Pixel);
                        }
                        else if (location == 4)//右下方
                        {
                            //在image上绘制水印
                            g.DrawImage(water, new Rectangle(Cover.Width - water.Width, Cover.Height - water.Height, water.Width, water.Height), 0, 0, water.Width, water.Height, GraphicsUnit.Pixel);
                        }
                        else if (location == 5)//正中间
                        {
                            //在image上绘制水印
                            g.DrawImage(water, new Rectangle((Cover.Width - water.Width) / 2, (Cover.Height - water.Height) / 2, water.Width, water.Height), 0, 0, water.Width, water.Height, GraphicsUnit.Pixel);
                        }
                        else
                        {
                            //在image上绘制水印
                            g.DrawImage(water, new Rectangle(Cover.Width - water.Width, Cover.Height - water.Height, water.Width, water.Height), 0, 0, water.Width, water.Height, GraphicsUnit.Pixel);
                        }
                        //释放画布
                        g.Dispose();
                        //释放水印图片
                        water.Dispose();
                        Cover.Save(HttpContext.Current.Server.MapPath("~/upfile/") + strName+"s"+ "." + strEnd);//保存打过水印的图片
                        Cover.Dispose();
                        string src1 = "upfile/" + strName + "s" + "." + strEnd;
                        Response.Write("<a href="+src1+">点击查看水印图片</a>");
                    }
                    else
                    {
                        Response.Write("<script>alert(''''该图片格式不能上传!'''')</script>");
                    }
                }
            }
            else
            {
               Response.Write("<script>alert(''''该图片格式不能上传!'''')</script>");
            }
        }
        else
        {
            Response.Write("<script>alert(''''请选择图片路径!'''')</script>");
        }
    }

转载地址:http://www.aspnetjia.com/Cont-39.html

c#图片添加水印的更多相关文章

  1. Android 图片添加水印图片或者文字

    给图片添加水印的基本思路都是载入原图,添加文字或者载入水印图片,保存图片这三个部分 添加水印图片: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  2. java实现给图片添加水印

    package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...

  3. java.imageIo给图片添加水印

    最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印; 一下提供下个方法,希望大家可以用得着: package com.blogs.image; import java ...

  4. ASP.NET -- WebForm -- 给图片添加水印标记

    ASP.NET -- WebForm: 给图片添加水印标记 ASP.NET:使用 WebForm(C#) 制作一个简单的为图片添加水印的页面. 1. Test2.aspx文件 <%@ Page ...

  5. JAVA给图片添加水印

    package com.test; import org.junit.Test; import javax.imageio.ImageIO; import java.awt.*; import jav ...

  6. 【Python】给图片添加水印的Python及Golang实现

    前言 不知道大家有没有这样的习惯,一篇比较得意的博客在发表一段时间之后会特别关注,前段时间一篇写到凌晨的博客被 码迷 这个网关爬取之后发表了,因为搜索引擎先爬取码迷的,所以我的博客无法被搜索到,即使直 ...

  7. .net为图片添加水印(转) jpg png和gif格式

    .net为图片添加水印(转) jpg png和gif格式 .net为图片添加水印(转) jpg png和gif格式,转自csdn的hyde82,现在跟大家一起来分享下: 利 用.net中System. ...

  8. iOS边练边学--(Quartz2D)图片添加水印

    一.给图片添加水印的基本步骤 加载图片 手动创建位图上下文 绘制原生的图片 给原生的图片添加文字 生成一张图片给我们,从上下文中获取图片 关闭上下文 二.注意:位图上下文的获取方式跟layer上下文不 ...

  9. int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件

    int.TryParse非预期执行引发的思考   问题出现 这天在写一个页面,想谨慎些就用了int.TryParse,结果出问题了. 代码如下: Copy int id = 1000; //Reque ...

  10. 海报工厂之(一)android 如何给图片添加水印和文字

    在Android中如何给图片添加水印,下面截取了部分核心代码,仅供参考: /**      * 获取图片缩小的图片      * @param src      * @return      */   ...

随机推荐

  1. jarsigner 签名android apk

    1.查看签名: jarsigner -verify app_signed.apk 查看是否签名,如果已经签名会打印 "jar verified". jarsigner -verif ...

  2. [转]BloomFilter——大规模数据处理利器

    Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法.通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合. 一. 实例 为了说明Bl ...

  3. JVM性能分析与优化

    JVM性能分析与优化: http://www.docin.com/p-757199232.html

  4. Java Web 工作技巧总结 16.10

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 在你成为领导者以前,成功只同自己的成长有关.当你成为领导者以后,成功都同别人的成长有关. 1.聊 ...

  5. windows 获取以及更改CMD控制台编码[转]

    本文转自 http://blog.sina.com.cn/s/blog_794b1d96010136yy.html 命令 chcp 功能:显示或设置活动代码页编号   CHCP [nnn]   nnn ...

  6. ubuntu系统从中文环境改成英文环境

      我们在 安装ubuntu server版的时候,有人可能选择了中文环境安装,因为那样好设置时区等参数,可是安装好了后,运行某些命令的时候会有中文乱码提示,看起很是头蛋疼, 我们就需要将其改成英文环 ...

  7. mac 进程管理

    1.前言 启用goagent.firefly等服务的时候,如果非正常退出,再次启动经常会遇到address already in use,端口被先前启动的服务进程所占用,导致服务无法使用.这种情况,可 ...

  8. 内容营销三大实用法则(内含干货)-同样可运用在EDM数据营销中

    内容为王的时代,注重内容的发展才能屹立于互联网的浪潮之中.一个优秀内容在搜寻引擎优化.用户互动,促进销售等方面都扮演重要的角色,博主在这方面深有体会,但是很多人往往走向事情的反面,不注重实际的内容,而 ...

  9. [CS231n-CNN] Backpropagation(反向传播算法)

    课程主页:http://cs231n.stanford.edu/ 上节讲到loss function: 引出了求导数使得loss function减小. -Back Propagation :梯度下降 ...

  10. Dbvisualizer9.0.6 解决中文乱码

    一.设置编辑器的编码 Tools->Tools Properties ->General->File Encoding 设置为UTF-8 二.如果数据库为UTF-8,则要在连接时做以 ...