程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> asp.net如何在圖片上加水印文字具體實現

asp.net如何在圖片上加水印文字具體實現

編輯:關於ASP.NET

     這篇文章主要介紹了asp.net如何在圖片上加水印文字具體實現,有需要的朋友可以參考一下

    第一步,添加一個一般處理程序(Handler),本例是ImageHandler   代碼如下: 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裡添加如下代碼:   代碼如下:     <httpHandlers>       <!--<add verb="GET" type="ImageHandler" path="*.jpg,*.png,*.gif,*.bmp"/>-->       <add verb="GET" type="ImageHandler" path="Uploads/*/*.jpg"/>           </httpHandlers>    
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved