好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#.NET 图片水印添加代码

本文实例为大家分享了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

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/livexy/archive/2010/07/05/1771714.html

dy("nrwz");

查看更多关于C#.NET 图片水印添加代码的详细内容...

  阅读:47次