• 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

  • 相关阅读:
    希尔排序
    快速排序
    归并排序
    插入排序
    简单选择排序
    冒泡排序
    算法之时间复杂度和空间复杂度
    数据结构与算法思维导图
    rootfs根文件系统
    kernel 2.6.35.7向S5PV210移植
  • 原文地址:https://www.cnblogs.com/hantianwei/p/2538179.html
Copyright © 2020-2023  润新知