Java 全局的一般处理程序图片添加水印
原创指定当用户调用文件夹中的文件时,它会自动转向此常规处理程序。
步骤: 1> 创建一个新类。继承 IHttpHandler接口。
2> web.config ,在
verb它是动作,比如它是动作,因为它是动作,比如"GET""POST""HEAD""DEBUG""" ,""指示所有请求表示所有请求
path应用程序目录[应用程序目录[images/Covers]和文件格式[]和文件格式[]以及文件格式[]和文件格式[*.jpg】
type当用户以vert指定方式请求指定方式请求指定方法请求指定方式请求path当指定的文件为时要传输到哪个类注意命名格式:NameSpace.类名
这允许精确控制权限,上传带有水印的图像,缺点,原始图像破坏,优点:节省资源。
①
public class WaterMark :IHttpHandler
{
#region IHttpHandler 成员
private const string WATERMARK\_URL = "~/Images/watermark.jpg"; //水印图片
private const string DEFAULTIMAGE\_URL = "~/Images/default.jpg"; //图像不存在,显示默认图像
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
//获取用户请求的图像获取用户请求的图像获取用户请求的图像
string filePath = context.Request.PhysicalPath;//请求路径
System.Drawing.Image Cover;
//确定请求的物理路径中是否存在文件
if (File.Exists(filePath))
{
//加载文件
Cover = Image.FromFile(filePath);
//加载水印图像加载水印图像
Image watermark = Image.FromFile(context.Server.MapPath(WATERMARK\_URL));
//实例化画布实例化画布实例化画布
Graphics g = Graphics.FromImage(Cover);
//在image在绘制水印时绘制水印在绘制水印时绘制水印
g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
//释放画布
g.Dispose();
//释放水印图像释放水印图像释放水印图像
watermark.Dispose();
}
else
{
//加载默认图像加载默认图像加载默认图像
Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE\_URL));
}
//设置输出格式设置输出格式
context.Response.ContentType = "image/jpeg";
//将图像放入输出流中将图像放入输出流中将图像存储在输出流中
Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Cover.Dispose();
context.Response.End();
}
#endregion
}
②
转载于:https://www.cnblogs.com/JiangXiaoTian/articles/2593404.html
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123

