.net网站的加水印功能, 本地调试成功(localhost),但用域名访问却失败
.net网站的一个功能,已写好如下代码,当客户端浏览器浏览test文件夹下的图片时,自动给图片添加水印。奇怪的是,本地调试成功,但域名访问却只见图片不见水印。是IIS6该如何设置的问题吗?
-------------------------------------------------------------------------------------
在Web.config的System.Web节里的<httpHandlers>节中添加如下代码:
<add verb="*" path="/test/*.jpg" type="WaterMarkHandler"/>
-------------------------------------------------------------------------------------
在App_Code文件夹中创建类WaterMarkHandler.cs,代码如下:
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public class WaterMarkHandler : IHttpHandler //实现IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//Request的PhysicalPath获取与请求的URL相对应的物理文件路径
Image myImage = Image.FromFile(context.Request.PhysicalPath);
// MapPath方法将水印图片的虚拟路径映射到服务器上的物理路径
Image watermark = Image.FromFile(context.Request.MapPath(@"~/test/watermark.jpg"));
//创建Graphics实例
Graphics myGraphcs = Graphics.FromImage(myImage);
//将水印叠加到图片右下角,这里水印位置可根据需要自行设置
myGraphcs.DrawImage(watermark, myImage.Width - watermark.Width, myImage.Height - watermark.Height, watermark.Width, watermark.Height);
myGraphcs.Dispose();
watermark.Dispose();
//设置要输出到客户端的格式
context.Response.ContentType = "image/jpeg";
//将叠加后的图片以指定的格式保存到Response的输出流中。
myImage.Save(context.Response.OutputStream, ImageFormat.Jpeg);
myImage.Dispose();
context.Response.End();
}
public bool IsReusable
{
get { return false; }
}
}