手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#图片添加水印的实例代码
c#图片添加水印的实例代码
摘要:复制代码代码如下:usingSystem;usingSystem.Drawing;usingSystem.Drawing.Drawing2D...

复制代码 代码如下:

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, 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

}

}

【c#图片添加水印的实例代码】相关文章:

C# IFF图形结构解析代码

C#动态执行字符串(动态创建代码)的实例代码

c# 获取网页中指定的字符串信息的实例代码

C#反射在实际应用中的实例代码

基于c# 接口的实例详解

C#打印出正等腰三角形实例代码

C#读取XML中元素和属性值的实现代码

c#文件的复制,移动,创建(实例代码)

C# Dictionary的使用实例代码

C#求解哈夫曼树,实例代码

精品推荐
分类导航