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;
}
}
}
}