水印源码

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web;

namespace WebApp2019ASPX._06水印_画布上画图片画字
{
    /// <summary>
    /// WaterMark 的摘要说明
    /// </summary>
    public class WaterMark : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
            string originalImageFile = context.Request.MapPath("/ImageUpload/1.png");//原始图像
            using (Image originalImage = Image.FromFile(originalImageFile))
            {
                // 创建一个新的位图,用于存放带有水印的图片---(1)就是画布 在画布上画图写字
                using (Bitmap bmp = new Bitmap(originalImage.Width, originalImage.Height))
                {
                    using (Graphics g = Graphics.FromImage(bmp))//(2)画笔---给布加根儿笔
                    {
                        // 设置高质量插值法
                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                        g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

                        // 绘制原始图片到新位图上
                        g.DrawImage(originalImage, new Point(0, 0));//画笔从画布左上角开始画

                        // 设置水印文字的字体、颜色和位置
                        Font font = new Font("黑体", 24, FontStyle.Bold, GraphicsUnit.Pixel);
                        Brush brush = new SolidBrush(Color.FromArgb(255, 255, 0, 0)); // 参数:透明度+红+绿+兰 目前此为不透明红 半透明白色文字
                        PointF pointF = new PointF(originalImage.Width - 200, originalImage.Height - 100); // 水印位置,例如右下角
                        string watermarkText = "Watermark Text"; // 水印文字内容

                        // 绘制水印文字到图片上
                        g.DrawString(watermarkText, font, brush, pointF);
                    }
                    string waterMarkFile = context.Request.MapPath("/ImageUpload/WaterMark_"+Guid.NewGuid()+".jpg");
                    // 保存带有水印的图片
                    bmp.Save(waterMarkFile, ImageFormat.Jpeg);
                    context.Response.Write("waterMark Image general success...");
                }
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 

posted @ 2026-05-20 23:02  techNote  阅读(2)  评论(0)    收藏  举报