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

时间: 2024-10-24 22:29:32

C#.NET 添加图片水印的相关文章

Word文档如何添加图片水印

  Word文档如何添加图片水印 1.打开需要添加图片水印的Word文档,接着点击工具栏的"页面布局"→"水印"→"自定义水印". 2.进入水印设置选项后点击"图片水印",然后选择相印的图片. 3.插入图片后我们还可以对图片水印的效果进行设置. 4.设置完毕返回文档即可看到添加图片水印后的效果.

Word2013如何添加图片水印以和文字水印

  Word2013中添加图片水印以和文字水印的方法: ①启动Word2013,单击设计选项卡下的水印按钮,就会出现几个现成的模板,如果都不满意,那么点击自定义水印按钮. ②先来说一下文字水印的添加,勾选文字水印,设置语言.文字.字体.字号.颜色.版式等等. ③应用到文档中,文字水印就添加完毕了. ④图片水印也是同样的方法,勾选图片水印,选择好图片之后,单击应用. ⑤好了,图片水印也添加完成了.

android视频添加水印-android给视频添加图片水印

问题描述 android给视频添加图片水印 android给视频添加图片水印,如果有个demo那更好了,demo可发送我的邮箱2314931033@qq.com,万分感谢! 解决方案 Android:图片添加水印android 如何给图片添加水印Android为图片添加水印文字 解决方案二: 使用VCamera开发架构,上面有添加水印的功能https://www.vitamio.org/docs/news/2015/0528/37.html

PHP图片处理之使用imagecopy函数添加图片水印实例_php技巧

为图片添加水印也是图片处理中常见的功能.因为只要在页面中见到的图片都可以很轻松地拿到,你辛辛苦苦编辑的图片不想被别人不费吹灰之力拿走就用,所以为图片添加水印以确定版权,防止图片被盗用.制作水印可以使用文字(公司名称加网址),也可以使用图片(公司LOGO),图片水印效果更好一些,因为可以通过一些做图片软件进行美化.使用文字做水印,只需要在图片上画一些文字即可.如果制作图片水印,就需要先了解一下GD库中的imagecopy()函数,能复制图片的一部分.该函数的原型如下所示: 复制代码 代码如下: b

asp.net在图片上传的时候怎么给上传的图片在右下角添加图片水印

问题描述 asp.net在图片上传的时候怎么给上传的图片在右下角添加图片水印,希望有具体的的实现步骤和可行的代码实例 解决方案 解决方案二: 解决方案三:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Drawing;usingSystem.IO;usingSystem.Drawing.Imaging;usingSystem.Web;usingSystem.Drawing.Drawing2D;usi

WordPress自动添加图片水印插件DX-Watermark 安装与设置

我们辛苦撰写的文章最为担心的就是被人复制,甚至连带版权出处都不带的,这样的问题在国内网站中很常见.作为我们博主,虽然不能100%的确保防盗,但是可以通过一些技术手段使得即便被转载没有保留出处,也可以在其内容中包含我们的一些信息存在,其中最为普遍的就是添加图片水印.   有些朋友在编辑文章的时候,都是手工编辑图片的时候手工添加水印图片,但是如果我们使用的是WordPress程序,可以使用插件自动添加.其中我们也可以看到很多WP插件支持自动水印,其中老蒋个人认为比较好的还是DX-Watermark插

[转]c# 添加图片水印,可以指定水印位置+生成缩略图

 c# 添加图片水印,可以指定水印位置+生成缩略图       早上,一哥儿发来添加图片水印的资料.有三个信息,如下:              xx 09:57:35 http://index.cnblogs.com/archive/2004/10/20/54498.aspx  王二狗 09:57:51 好的,我看看     xx 09:58:12 http://www.iyuanma.com/info/18/17026_200592663244.htm  xx 10:07:00 http:/

PHP添加图片水印、压缩、剪切的封装类_php实例

给图片添加水印,其实就是把原来的图片和水印添加在一起,下面小编把最近整理的资料分享给大家. php对图片文件的操作主要是利用GD库扩展.当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码.当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法. 操作图片主要历经四个步骤:         第一步:打开图片         第二步:操作图片         第三步:输出图片         第四步:销毁图片 1,3,4三个步骤每次都

C# 添加图片水印类实现代码_实用技巧

复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.IO; using System.Drawing.Imaging; using System.Web; using System.Drawing.Drawing2D; using System.Reflection; namespace Chen { public clas