Java 全局的一般处理程序图片添加水印

原创
小哥 3年前 (2022-10-21) 阅读数 15 #技术教程

指定当用户调用文件夹中的文件时,它会自动转向此常规处理程序。
步骤: 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

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除