c#图片添加水印的实例代码
发布时间:2020-12-15 04:16:09 所属栏目:百科 来源:网络整理
导读:复制代码 代码如下: using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; namespace ImageDrawing { /// summary /// 图片修改类,主要是用来保护图片版权的 /// /summary public class Im
复制代码 代码如下: using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; namespace ImageDrawing { /// <summary> /// 图片修改类,主要是用来保护图片版权的 /// </summary> public class ImageModification { #region "member fields" private string modifyImagePath=null; private string drawedImagePath=null; private int rightSpace; private int bottoamSpace; private int lucencyPercent=70; private string outPath=null; #endregion public ImageModification() { } #region "propertys" /// <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;} } //获取或设置水印在修改图片中距底部的高度 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 "methods" /// <summary> /// 开始绘制水印 /// </summary> 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}, new float[] {0,1,(float)this.LucencyPercent/100f,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,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,FileAccess.Write); } if(fs!=null) { fs.Write(imgData,imgData.Length); fs.Close(); } } finally { try { drawedImage.Dispose(); modifyImage.Dispose(); g.Dispose(); } catch{;} } } #endregion } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |