asp.net 添加水印的代码(已测试) |
本文标签:asp.net,添加水印 加水印的功能代码如下所示 复制代码 代码如下: /// <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); } |