手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net 添加水印的代码(已测试)
asp.net 添加水印的代码(已测试)
摘要:加水印的功能代码如下所示复制代码代码如下://////图片修改类,主要是用来保护图片版权的,版权归原作者所有///publicclasspi...

加水印的功能代码如下所示

复制代码 代码如下:

/// <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" 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);

}

【asp.net 添加水印的代码(已测试)】相关文章:

asp.net 操作cookie的实例

asp.net 结合mysql存储过程进行分页代码

asp.net求3位不同数字的组合数

asp.net DZ论坛中根据IP地址取得所在地的代码

asp.net 按字节检查包含全半角的文字

asp.net学习中发现的比较完整的流程

asp.net HTML文件上传标签

asp.net cookie清除的代码

c# .net 生成图片验证码的代码

asp.net动态加载自定义控件的方法

精品推荐
分类导航