源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

asp.net如何在图片上加水印文字具体实现

  • 时间:2022-03-04 06:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:asp.net如何在图片上加水印文字具体实现
第一步,添加一个一般处理程序(Handler),本例是ImageHandler
[u]复制代码[/u] 代码如下:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Net.Mime; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; /// <summary> /// Summary description for ImageHandler /// </summary> public class ImageHandler : IHttpHandler {     public ImageHandler()     {     }     public string GetContentType(String path)     {         switch (Path.GetExtension(path))         {             case ".bmp": return "Image/bmp";             case ".gif": return "Image/gif";             case ".jpg": return "Image/jpeg";             case ".png": return "Image/png";             default: break;         }         return String.Empty;     }     public ImageFormat GetImageFormat(String path)     {         switch (Path.GetExtension(path).ToLower())         {             case ".bmp": return ImageFormat.Bmp;             case ".gif": return ImageFormat.Gif;             case ".jpg": return ImageFormat.Jpeg;             case ".png": return ImageFormat.Png;             default: return null;         }     }     protected byte[] WatermarkImage(HttpContext context)     {         byte[] imageBytes = null;         if (File.Exists(context.Request.PhysicalPath))         {             // Normally you'd put this in a config file somewhere.             string watermark = "世复检测";             Image image = Image.FromFile(context.Request.PhysicalPath);             Graphics graphic;             if (image.PixelFormat != PixelFormat.Indexed && image.PixelFormat != PixelFormat.Format8bppIndexed && image.PixelFormat != PixelFormat.Format4bppIndexed && image.PixelFormat != PixelFormat.Format1bppIndexed)             {                 // Graphic is not a Indexed (GIF) image                 graphic = Graphics.FromImage(image);             }             else             {                 /* Cannot create a graphics object from an indexed (GIF) image.                  * So we're going to copy the image into a new bitmap so                  * we can work with it. */                 Bitmap indexedImage = new Bitmap(image);                 graphic = Graphics.FromImage(indexedImage);                 // Draw the contents of the original bitmap onto the new bitmap.                 graphic.DrawImage(image, 0, 0, image.Width, image.Height);                 image = indexedImage;             }             graphic.SmoothingMode = SmoothingMode.AntiAlias & SmoothingMode.HighQuality;             Font myFont = new Font("Arial", 15);             SolidBrush brush = new SolidBrush(Color.FromArgb(255, Color.Red));             /* This gets the size of the graphic so we can determine              * the loop counts and placement of the watermarked text. */             SizeF textSize = graphic.MeasureString(watermark, myFont);             //// Write the text across the image.             //for (int y = 0; y < image.Height; y++)             //{             //    for (int x = 0; x < image.Width; x++)             //    {             //        PointF pointF = new PointF(x, y);             //        graphic.DrawString(watermark, myFont, brush, pointF);             //        x += Convert.ToInt32(textSize.Width);             //    }             //    y += Convert.ToInt32(textSize.Height);             //}             // Write the text at the right bottom of the image.             for (int y = image.Height-25; y < image.Height; y++)             {                 for (int x = image.Width-100; x < image.Width; x++)                 {                     PointF pointF = new PointF(x, y);                     graphic.DrawString(watermark, myFont, brush, pointF);                     x += Convert.ToInt32(textSize.Width);                 }                 y += Convert.ToInt32(textSize.Height);             }             using (MemoryStream memoryStream = new MemoryStream())             {                 image.Save(memoryStream, GetImageFormat(context.Request.PhysicalPath));                 imageBytes = memoryStream.ToArray();             }         }         return imageBytes;     }     #region IHttpHandler Members     public bool IsReusable     {         get { return false; }     }     public void ProcessRequest(HttpContext context)     {         context.Response.Clear();         context.Response.ContentType = GetContentType(context.Request.PhysicalPath);         byte[] imageBytes = WatermarkImage(context);         if (imageBytes != null)         {             context.Response.OutputStream.Write(imageBytes, 0, imageBytes.Length);         }         else         {             // No bytes = no image which equals NO FILE.                // Therefore send a 404 - not found response.             context.Response.StatusCode = 404;         }         context.Response.End();     }     #endregion }
第二步,在web.config里添加如下代码:
[u]复制代码[/u] 代码如下:
    <httpHandlers>       <!--<add verb="GET" type="ImageHandler" path="*.jpg,*.png,*.gif,*.bmp"/>-->       <add verb="GET" type="ImageHandler" path="Uploads/*/*.jpg"/>          </httpHandlers>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部