C#.NET 图片水印添加代码
本文实例为大家分享了C#.NET添加图片水印的方法,供大家参考,具体内容如下
usingSystem;
usingSystem.Drawing;
usingSystem.Drawing.Drawing2D;
usingSystem.Drawing.Imaging;
usingSystem.IO;
namespacePub.Class
{
///<summary>
///添加水印类只支持添加图片水印
///</summary>
publicclassWatermark
{
#region私有成员
privatestringmodifyImagePath=null;
privatestringdrawedImagePath=null;
privateintrightSpace;
privateintbottoamSpace;
privateintlucencyPercent=70;
privatestringoutPath=null;
#endregion
#region构造器
///<summary>
///构造函数
///</summary>
publicWatermark(){}
#endregion
#region属性
///<summary>
///获取或设置要修改的图像路径
///</summary>
publicstringModifyImagePath
{
get{returnthis.modifyImagePath;}
set{this.modifyImagePath=value;}
}
///<summary>
///获取或设置在画的图片路径(水印图片)
///</summary>
publicstringDrawedImagePath
{
get{returnthis.drawedImagePath;}
set{this.drawedImagePath=value;}
}
///<summary>
///获取或设置水印在修改图片中的右边距
///</summary>
publicintRightSpace
{
get{returnthis.rightSpace;}
set{this.rightSpace=value;}
}
///<summary>
///获取或设置水印在修改图片中距底部的高度
///</summary>
publicintBottoamSpace
{
get{returnthis.bottoamSpace;}
set{this.bottoamSpace=value;}
}
///<summary>
///获取或设置要绘制水印的透明度,注意是原来图片透明度的百分比
///</summary>
publicintLucencyPercent
{
get{returnthis.lucencyPercent;}
set{if(value>=0&&value<=100)this.lucencyPercent=value;}
}
///<summary>
///获取或设置要输出图像的路径
///</summary>
publicstringOutPath
{
get{returnthis.outPath;}
set{this.outPath=value;}
}
#endregion
#region开始绘制水印DrawImage
///<summary>
///开始绘制水印
///</summary>
///<example>
///<code>
///Watermarkwm=newWatermark();
///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>
publicvoidDrawImage()
{
ImagemodifyImage=null;
ImagedrawedImage=null;
Graphicsg=null;
try{
modifyImage=Image.FromFile(this.ModifyImagePath);//建立图形对象
drawedImage=Image.FromFile(this.DrawedImagePath);
g=Graphics.FromImage(modifyImage);
intx=modifyImage.Width-this.rightSpace;//获取要绘制图形坐标
inty=modifyImage.Height-this.BottoamSpace;
float[][]matrixItems={//设置颜色矩阵
newfloat[]{1,0,0,0,0},
newfloat[]{0,1,0,0,0},
newfloat[]{0,0,1,0,0},
newfloat[]{0,0,0,(float)this.LucencyPercent/100f,0},
newfloat[]{0,0,0,0,1}};
ColorMatrixcolorMatrix=newColorMatrix(matrixItems);
ImageAttributesimgAttr=newImageAttributes();
imgAttr.SetColorMatrix(colorMatrix,ColorMatrixFlag.Default,ColorAdjustType.Bitmap);
g.DrawImage(//绘制阴影图像
drawedImage,
newRectangle(x,y,drawedImage.Width,drawedImage.Height),
0,0,drawedImage.Width,drawedImage.Height,
GraphicsUnit.Pixel,imgAttr);
string[]allowImageType={".jpg",".gif",".png",".bmp",".tiff",".wmf",".ico"};//保存文件
FileInfofile=newFileInfo(this.ModifyImagePath);
ImageFormatimageType=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;
}
MemoryStreamms=newMemoryStream();
modifyImage.Save(ms,imageType);
byte[]imgData=ms.ToArray();
modifyImage.Dispose();
drawedImage.Dispose();
g.Dispose();
FileStreamfs=null;
if(this.OutPath==null||this.OutPath==""){
File.Delete(this.ModifyImagePath);
fs=newFileStream(this.ModifyImagePath,FileMode.Create,FileAccess.Write);
}else{
fs=newFileStream(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
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。