c#添加图片水印类的代码举例

发布时间:2020-09-09编辑:脚本学堂
本文介绍下,用c#实现的为图片添加水印的一个类,有需要的朋友参考下吧。

代码如下:

//为图片添加水印
//edit by www.jb200.com
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 class warterPic 
{ 
/// <summary> 
/// 给图片上水印 
/// </summary> 
/// <param name="filepath">原图片地址</param> 
/// <param name="waterfile">水印图片地址</param> 
/// 
public void markwater(string filepath, string waterfile) 
{ 
//gif不水印 
int i = filepath.LastIndexOf("."); 
string ex = filepath.Substring(i, filepath.Length - i); 
if (string.Compare(ex, ".gif", true) == 0) 
{ 
return; 
} 
string modifyimagepath = filepath;//修改的图像路径 
int lucencypercent = 25; 
Image modifyimage = null; 
Image drawedimage = null; 
Graphics g = null; 
try 
{ 
//建立图形对象 
modifyimage = Image.FromFile(modifyimagepath, true); 
drawedimage = Image.FromFile(waterfile, true); 
g = Graphics.FromImage(modifyimage); 
//获取要绘制图形坐标 
int x = modifyimage.Width - drawedimage.Width; 
int y = modifyimage.Height - drawedimage.Height; //设置颜色矩阵 
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)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), 10, 10, drawedimage.Width,
 drawedimage.Height, GraphicsUnit.Pixel, imgattr); //保存文件 
string[] allowimagetype ={ ".jpg", ".gif", ".png", ".bmp", ".tiff", ".wmf", ".ico" }; 
FileInfo fi = new FileInfo(modifyimagepath); 
ImageFormat imagetype = ImageFormat.Gif; 
switch (fi.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; 
//File.Delete(modifyimagepath); 
fs = new FileStream(modifyimagepath, FileMode.Create, FileAccess.Write); 
if (fs != null) 
{ 
fs.Write(imgdata, 0, imgdata.Length); 
fs.Close(); 
} 
} 
finally 
{ 
try 
{ 
drawedimage.Dispose(); 
modifyimage.Dispose(); 
g.Dispose(); 
} 
catch 
{ } 
} 
} 
} 
}