您的位置:首页 > 编程语言 > ASP

asp.net 添加水印的代码(已测试)

2010-03-23 00:00 871 查看
加水印的功能代码如下所示
/// <summary> 
/// 图片修改类,主要是用来保护图片版权的,版权归原作者所有 
/// </summary> 
public class picmark 
{ 
#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 picmark() 
{ 
} 
#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 
}

前台代码如下所示
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="demo.WebForm1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:FileUpload ID="FileUpload1" runat="server" /> 
<br /> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 
</div> 
</form> 
</body> 
</html>

cs类的代码如下所示
protected void Button1_Click(object sender, EventArgs e) 
{ 
string extension = Path.GetExtension(this.FileUpload1.FileName).ToUpper(); 
string fileName = Guid.NewGuid().ToString(); 
string savePath = Server.MapPath("../upfile/" + fileName+ extension); 
if (!Directory.Exists(Path.GetDirectoryName(savePath))) 
{ 
Directory.CreateDirectory(Path.GetDirectoryName(savePath)); 
} 
this.FileUpload1.SaveAs(savePath); 
//实例化类 
picmark wm = new picmark(); 
wm.DrawedImagePath = Server.MapPath("/upfile/" + "backlogo.gif") ; 
wm.ModifyImagePath = savePath; 
wm.RightSpace = 145; 
wm.BottoamSpace =17; 
wm.LucencyPercent = 50; 
wm.OutPath = Server.MapPath("/upfile/" + fileName.Replace("-","").ToUpper() + extension); 
wm.DrawImage(); 
//fileName = "_New_" + fileName; 
//string sPath = Server.MapPath("../upfile/" + fileName + extension); 
//this.FileUpload1.SaveAs(sPath); 
//保存加水印过后的图片,删除原始图片 
if (File.Exists(savePath)) 
{ 
File.Delete(savePath); 
//File.Delete(wm.OutPath); 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: