C# asp.net上传图片加水印文字(个人心得)
来源:互联网 发布:php大马源码 编辑:程序博客网 时间:2024/04/29 10:14
图片加文字水印的文章到百度或者谷歌上去一搜一大堆,但是貌似有用的没多少,很多都是一个版本,其他的都是转载或者分享的,很多情况下都不能满足我们自己的需求,今天我正好要用到图片加水印这方面知识,于是我整理了一下我的心得,仅供大家参考,大虾们跳过,我是菜鸟,哈哈~~
下面开讲:
第一步:首先我想的是原理
因为使用微博的原因,大家都注意到了,微博上分图片在右下角都会加上你的微博地址,而且无论图片是大是小,水印都会加到右下角位置,根据这一想法,我画了一张图,直观一点解释一下...如图所示:
从图片上我们可以很直观明了的看出这里面的原理了,所以我们代码要解决的问题就是获取图片的宽度和高度,以及根据字体大小以及文字的个数计算出所话区域的长度和高度,这样就很简单了,呵呵...
第二步:写代码、测试代码
过程我就省略了,直接看代码吧:
/// <summary> /// 图片加水印文字 /// </summary> /// <param name="oldpath">旧图片地址</param> /// <param name="text">水印文字</param> /// <param name="newpath">新图片地址</param> /// <param name="Alpha">透明度</param> /// <param name="fontsize">字体大小</param> public static void AddWaterText(string oldpath, string text, string newpath, int Alpha, int fontsize) { try { text = text + "版权所有"; FileStream fs = new FileStream(oldpath, FileMode.Open); BinaryReader br = new BinaryReader(fs); byte[] bytes = br.ReadBytes((int)fs.Length); br.Close(); fs.Close(); MemoryStream ms = new MemoryStream(bytes); System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(ms); int imgPhotoWidth = imgPhoto.Width; int imgPhotoHeight = imgPhoto.Height; Bitmap bmPhoto = new Bitmap(imgPhotoWidth, imgPhotoHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb); bmPhoto.SetResolution(72, 72); Graphics gbmPhoto = Graphics.FromImage(bmPhoto); //gif背景色 gbmPhoto.Clear(Color.FromName("white")); gbmPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; gbmPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; gbmPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, imgPhotoWidth, imgPhotoHeight), 0, 0, imgPhotoWidth, imgPhotoHeight, GraphicsUnit.Pixel); System.Drawing.Font font = null; System.Drawing.SizeF crSize = new SizeF(); font = new Font("宋体", fontsize, FontStyle.Bold); //测量指定区域 crSize = gbmPhoto.MeasureString(text, font); float y = imgPhotoHeight - crSize.Height; float x = imgPhotoWidth - crSize.Width; System.Drawing.StringFormat StrFormat = new System.Drawing.StringFormat(); StrFormat.Alignment = System.Drawing.StringAlignment.Center; //画两次制造透明效果 System.Drawing.SolidBrush semiTransBrush2 = new System.Drawing.SolidBrush(Color.FromArgb(Alpha, 56, 56, 56)); gbmPhoto.DrawString(text, font, semiTransBrush2, x + 1, y + 1); System.Drawing.SolidBrush semiTransBrush = new System.Drawing.SolidBrush(Color.FromArgb(Alpha, 176, 176, 176)); gbmPhoto.DrawString(text, font, semiTransBrush, x, y); bmPhoto.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg); gbmPhoto.Dispose(); imgPhoto.Dispose(); bmPhoto.Dispose(); } catch { ; } }
代码我就不解释了,基本上在原理中都解释过了。另:关于参数的设置,我们还可以加上是什么字体、字体颜色、是否加粗,以及定位到什么位子等,这样就封装的更好了,由于我现在只需要把水印加到右下角,所以我就没有再写了,呵呵...原理一样,封装也很好封装,留给你们写吧,哈哈...
下面看效果图吧,因为图是最直观的展示了...
上面就是我随便截了张图的效果图。
调用方法:命名空间.类名.AddWaterText(picpath, "Tandy Tang - 博客园", picpath, 255, 18);
如果你觉得对你有帮助的话,别忘了点推荐哦~~
转载自Tandy Tang's Personal Blog
:http://www.cnblogs.com/tandyshen/archive/2012/04/14/picwater.html
- C# asp.net上传图片加水印文字(个人心得)
- ASP.NET图片上传,加水印文字和水印图片!
- c# 上传图片加文字水印及图片水印
- ASP.NET图片上传加水印
- .NET上传图片加文字和水印图片源码
- ASP.NET(C#)图片加文字、图片水印
- ASP.NET(C#)图片加文字、图片水印
- ASP.NET(C#)图片加文字、图片水印
- ASP.NET(C#)图片加文字、图片水印
- ASP.NET 上传图片 生成文字 图片水印 (单图片水印 or 全覆盖图片水印)
- asp.net如何在图片上加水印文字
- asp.net如何在图片上加水印文字
- Asp.net 函数_上传图片,加水印,图片剪切
- ASP.NET(C#)上传图片加上文字或图片水印
- 上传并加文字水印 上传并加图片水印
- NET 用户控件 文件上传,并给图片文件加水印(增加文字水印文字设置)
- ASP.NET上传图片到数据库并加水印
- ASP.NET 上传图片添加文字、Logo水印
- json
- oracle nvl函数的使用
- 应用程序发布:VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序。。”
- c++ 内存 继承
- my love
- C# asp.net上传图片加水印文字(个人心得)
- Struts2中的get、set方法作用:
- 2012腾讯实习招聘笔试附加题1求解方法
- 最小生成树模板
- 新手学习.OD符号调试技术
- μC/OS之bulid stack
- 浅谈struts2之chain[2]
- WS基础知识
- 数据结构之选择排序的实现(C语言)