C#.NET 图片水印添加代码
来源:本站原创|时间:2020-01-10|栏目:C#教程|点击: 次
本文实例为大家分享了C#.NET添加 图片水印的方法,供大家参考,具体内容如下
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; namespace Pub.Class { /// <summary> /// 添加水印类 只支持添加图片水印 /// </summary> public class Watermark { #region 私有成员 private string modifyImagePath=null; private string drawedImagePath=null; private int rightSpace; private int bottoamSpace; private int lucencyPercent=70; private string outPath=null; #endregion #region 构造器 /// <summary> /// 构造函数 /// </summary> public Watermark() { } #endregion #region 属性 /// <summary> /// 获取或设置要修改的图像路径 /// </summary> public string ModifyImagePath { get{return this.modifyImagePath;} set{this.modifyImagePath=value;} } /// <summary> /// 获取或设置在画的图片路径(水印图片) /// </summary> public string DrawedImagePath { get{return this.drawedImagePath;} set{this.drawedImagePath=value;} } /// <summary> /// 获取或设置水印在修改图片中的右边距 /// </summary> public int RightSpace { get{return this.rightSpace;} set{this.rightSpace=value;} } /// <summary> /// 获取或设置水印在修改图片中距底部的高度 /// </summary> public int BottoamSpace { get{return this.bottoamSpace;} set{this.bottoamSpace=value;} } /// <summary> /// 获取或设置要绘制水印的透明度,注意是原来图片透明度的百分比 /// </summary> public int LucencyPercent { get{return this.lucencyPercent;} set { if(value>=0&&value<=100) this.lucencyPercent=value; } } /// <summary> /// 获取或设置要输出图像的路径 /// </summary> public string OutPath { get{return this.outPath;} set{this.outPath=value;} } #endregion #region 开始绘制水印 DrawImage /// <summary> /// 开始绘制水印 /// </summary> /// <example> /// <code> /// Watermark wm = new Watermark(); /// wm.DrawedImagePath= Server.MapPath("") + "/upfile/" + "backlogo.gif"; /// wm.ModifyImagePath=path; /// wm.RightSpace=184; /// wm.BottoamSpace=81; /// wm.LucencyPercent=50; /// wm.OutPath=Server.MapPath("") + "/upfile/" + fileName + "_new" + extension; /// wm.DrawImage(); /// /// //保存加水印过后的图片,删除原始图片 /// mFileName=fileName + "_new" + extension; /// if(File.Exists(path)) { File.Delete(path); } /// </code> /// </example> public void DrawImage() { Image modifyImage=null; Image drawedImage=null; Graphics g=null; try { modifyImage=Image.FromFile(this.ModifyImagePath);//建立图形对象 drawedImage=Image.FromFile(this.DrawedImagePath); g=Graphics.FromImage(modifyImage); int x=modifyImage.Width-this.rightSpace;//获取要绘制图形坐标 int y=modifyImage.Height-this.BottoamSpace; float[][] matrixItems ={//设置颜色矩阵 new float[] {1, 0, 0, 0, 0}, new float[] {0, 1, 0, 0, 0}, new float[] {0, 0, 1, 0, 0}, new float[] {0, 0, 0, (float)this.LucencyPercent/100f, 0}, new float[] {0, 0, 0, 0, 1}}; ColorMatrix colorMatrix = new ColorMatrix(matrixItems); ImageAttributes imgAttr=new ImageAttributes(); imgAttr.SetColorMatrix(colorMatrix,ColorMatrixFlag.Default,ColorAdjustType.Bitmap); g.DrawImage(//绘制阴影图像 drawedImage, new Rectangle(x,y,drawedImage.Width,drawedImage.Height), 0,0,drawedImage.Width,drawedImage.Height, GraphicsUnit.Pixel,imgAttr); string[] allowImageType={".jpg",".gif",".png",".bmp",".tiff",".wmf",".ico"};//保存文件 FileInfo file=new FileInfo(this.ModifyImagePath); ImageFormat imageType=ImageFormat.Gif; switch(file.Extension.ToLower()) { case ".jpg": imageType=ImageFormat.Jpeg; break; case ".gif": imageType=ImageFormat.Gif; break; case ".png": imageType=ImageFormat.Png; break; case ".bmp": imageType=ImageFormat.Bmp; break; case ".tif": imageType=ImageFormat.Tiff; break; case ".wmf": imageType=ImageFormat.Wmf; break; case ".ico": imageType=ImageFormat.Icon; break; default: break; } MemoryStream ms=new MemoryStream(); modifyImage.Save(ms,imageType); byte[] imgData=ms.ToArray(); modifyImage.Dispose(); drawedImage.Dispose(); g.Dispose(); FileStream fs=null; if(this.OutPath==null || this.OutPath=="") { File.Delete(this.ModifyImagePath); fs=new FileStream(this.ModifyImagePath,FileMode.Create,FileAccess.Write); } else { fs=new FileStream(this.OutPath,FileMode.Create,FileAccess.Write); } if(fs!=null) { fs.Write(imgData,0,imgData.Length); fs.Close(); } } finally { try { drawedImage.Dispose(); modifyImage.Dispose(); g.Dispose(); } catch{} } } #endregion } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
您可能感兴趣的文章
- 01-10C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- 01-10C#编程获取资源文件中图片的方法
- 01-10http图片上传安全性问题 根据ContentType (MIME) 判断其实不准确、不
- 01-10C#将图片存放到SQL SERVER数据库中的方法
- 01-10C#.NET实现网页自动登录的方法
- 01-10C#操作数据库中存取图片文件的方法
- 01-10C#图片处理3种高级应用
- 01-10C#.NET中如何批量插入大量数据到数据库中
- 01-10C#.Net ArrayList的使用方法
- 01-10c#实现识别图片上的验证码数字
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 04-02jquery与jsp,用jquery
- 01-10C#中split用法实例总结
- 01-10delphi制作wav文件的方法
- 01-11ajax实现页面的局部加载
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10SublimeText编译C开发环境设置
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05DEDE织梦data目录下的sessions文件夹有什