手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >C# 给站点指定位置的某种格式的图片添加水印
C# 给站点指定位置的某种格式的图片添加水印
摘要:复制代码代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingS...

复制代码 代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Drawing;

namespace Chen

{

/// <summary>

/// HandlerImageOpener 的摘要说明

/// </summary>

public class HandlerImageOpener : IHttpHandler

{

public HandlerImageOpener()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

private string _path = "";

/// <summary>

/// 水印图片路径

/// </summary>

public string PngPath

{

get

{

if (_path == "")

{

_path = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["WatermarkedImagePath"]);

}

return _path;

}

}

/// <summary>

/// 为图片加水印并写入到Response.OutputStream

/// </summary>

/// <param name="hc">上下文对象</param>

public void GetNewBitMap(HttpContext hc)

{

// 加载原图片

//System.Web.HttpContext.Current.Response.Write(System.Drawing.Image.FromFile(hc.Request.PhysicalPath));

//System.Web.HttpContext.Current.Response.End();

Bitmap oldBmp = new Bitmap(System.Drawing.Image.FromFile(hc.Request.PhysicalPath));

int newWidth = oldBmp.Width;

int newHeight = oldBmp.Height;

if (oldBmp != null)

{

// 绑定画板

Graphics grap = Graphics.FromImage(oldBmp);

// 加载水印图片

Bitmap bt = new Bitmap(PngPath);

// 水印位置控制

int pH = GetNewPoint(newHeight, bt.Height, true);

int pW = GetNewPoint(newWidth, bt.Width, false);

if (newHeight < pH * 8)

pH = pH / 2;

if (newWidth < pW)

pW = pW / 2 / 2;

int pX = newHeight - pH;

int pY = newWidth - pW - 3;

// 添加水印

grap.DrawImage(bt, pY, pX, pW, pH);

// 写入到输出流

oldBmp.Save(hc.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

}

}

// 控制宽高

private int GetNewPoint(int oldP, int newP, bool isW)

{

int p = 4;

if (isW)

{

p = 16;

}

if (oldP < (newP * p))

{

newP /= 2;

if (oldP < (newP * p))

{

GetNewPoint(oldP, newP, isW);

}

}

return newP;

}

#region IHttpHandler 成员

bool IHttpHandler.IsReusable

{

get { return true; }

}

void IHttpHandler.ProcessRequest(HttpContext context)

{

GetNewBitMap(context);

}

#endregion

}

}

生成.dll文件后在web.config 中配置

<>

<appSettings>

<add key="WatermarkedImagePath" value="~/logo.gif"/>

</appSettings>

<>

<httpHandlers>

<add type="Chen.HandlerImageOpener, Chen" verb="*" path="image/*.jpg,image/*.gif,image/*.png,image/*.bmp" />

</httpHandlers>

【C# 给站点指定位置的某种格式的图片添加水印】相关文章:

让Silverlight 2.0动画动起来Making Silverlight 2.0 animation Start(不能运动原因)

ASP.net 生成缩略图的实例源代码

Asp.Net 数据操作类(附通用数据基类)

OpenCms 带分页的新闻列表

随机图片生成器制作方法

asp.net下定制日期输出格式的代码

ASP.NET 重定向的几种方法小结

asp.net datalist绑定数据后可以上移下移实现示例

Asp.net给站点某目录增加Aspnet用户

.net中webconfig 详解

精品推荐
分类导航