ASP.NET 给图片动态添加文字水印
来源:互联网 发布:中华网络一条龙可靠么 编辑:程序博客网 时间:2024/05/16 10:46
文件结构图:
Default.aspx 这里只是添加了几个图片
<div> <img src="images/3.jpg" /><br /><br /> 下面这张图片不存在显示程序指定的默认图片<br /> <img src="images/暂无图片.jpg" /> </div>
WaterMarkHandler.cs
using System;using System.Web;using System.Drawing;using System.Drawing.Imaging;using System.IO;/// <summary>///imageSY 的摘要说明/// </summary>public class WaterMarkHandler : IHttpHandler{ public WaterMarkHandler(){////TODO: 在此处添加构造函数逻辑// } #region IHttpHandler 成员 /// <summary> /// 指示其它请求是否可以使用这个实例,如果是true,则放入池中接受其它请求以提高请求 /// </summary> public bool IsReusable { get { return true; } } /// <summary> /// 处理请求 /// </summary> /// <param name="context">当前HTTP请求的上下文</param> public void ProcessRequest(HttpContext context) { //获取请求的物理图片路径 string imagePath = context.Request.PhysicalPath; //======================================================================================== //用此方法可获取当前URL,可进一步完善此方法,在本站没有水印,如果是外部引用则添加水印,需添加一个判断即可 //HttpRequest request = context.Request; //HttpResponse response = context.Response; //Uri referrerUri = request.UrlReferrer;//获取下载之前访问的那个页面的uri //Uri currentUri = request.Url;//获取当前URL地址信息 //----------------------------------------------------------------------------------------- //=============================================================================================== //生成添加水印的记录 //string logFileName = context.Server.MapPath("~/log.txt"); //StreamWriter writer = null; //if (!File.Exists(logFileName)) //{ // writer = File.CreateText(logFileName); //} //else //{ // writer = new StreamWriter(logFileName, true, System.Text.Encoding.UTF8); //} //writer.WriteLine("请求文件名:{0},时间:{1}", imagePath, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //writer.Close(); //----------------------------------------------------------------------------------------------------- Image image = null; if (File.Exists(imagePath)) { //定义水印文字 string text = "图片水印文字"; //定义水印文字字体大小 int fontSize = 24; //水印文字字体 Font font = new Font("宋体", fontSize); //根据图片物理地址加载图片 image = Image.FromFile(imagePath); Graphics g = Graphics.FromImage(image); //获取要绘制水印文字所需要的显示区域大小 SizeF size = g.MeasureString(text, font); if (size.Width > image.Width || size.Height > image.Height) { //如果要显示的图片的尺寸都不足以显示按照指定字体来添加水印 //可以减小字体大小或者不添加水印(太小了没办法添加嘛) } else//添加水印文字 { Brush brush = Brushes.Red; //在图片上添加水印,绘制水印文字在图片的右下角 g.DrawString(text, font, brush, image.Width - size.Width, image.Height - size.Height); g.Dispose(); } } else//如果不存在,指定一个默认图片进行显示 { imagePath = context.Server.MapPath("~/images/nonepc.gif"); image = Image.FromFile(imagePath); } image.Save(context.Response.OutputStream, ImageFormat.Jpeg);//将添加水印的图片输入到当前流中 } #endregion}
最后在web.config文件中配置如下:
此处设置的只对images文件夹下的.jpg图片添加水印
在<configuration>配置节点下添加如下配置字节
<!--水印图片--> <!--需要控制的文件夹--><location path="images"><system.web><httpHandlers><!--对jpg文件添加水印,path="*.*"表示对所有格式添加水印,type="WaterMarkHandler"指定需要操作的类--><!--<add verb="*" path="*.jpg" type="HttpHandlers.WaterMarkHandler,HttpHandlers"/>--><add verb="*" path="*.jpg" type="WaterMarkHandler"/></httpHandlers></system.web></location><!--水印图片结束-->
最后结果如下:
- ASP.NET 给图片动态添加文字水印
- ASP.NET 给图片动态添加文字水印
- asp.net为图片添加文字水印
- asp.net 给图片添加水印
- asp.net 给图片添加水印
- asp.net动态添加图片水印
- 给图片添加文字水印
- 给图片添加文字水印
- asp.net实现图片添加文字及图片水印
- asp.net 添加文字水印
- ASP.NET 上传图片添加文字、Logo水印
- Java给图片添加图片、文字水印
- 给图片添加水印图片文字
- ASP.NET(C#)缩略图片,添加文字水印和图片水印
- JAVA给图片上添加水印文字
- java给图片添加水印文字
- php给图片添加文字水印
- java给图片添加水印文字
- 一个解析XML数据的简单Demo(以KissXml为例)
- js中易出错的点.....
- 正则表达式详解
- Java 内存模型
- 天猫首页多焦点轮换图片
- ASP.NET 给图片动态添加文字水印
- 天外有天——一代棋圣吴清源自传(4)
- 算术移位和逻辑移位
- 关于fork的写时复制!
- 学习笔记—————在Action中访问session,HttpServletReqeust,HttpServletResponse,parameters
- 如何只对QWidget的局部区域的显示内容更新
- DataTable 筛选 Select、统计 Compute
- 天外有天——一代棋圣吴清源自传(5)
- php 获取时间今天明天昨天时间戳