from : Pro ASPnetMVCFramework



using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Drawing; using System.Drawing.Imaging; using System.IO;  namespace TestMvcWebApp1.ActionResultEx {     public class WatermarkedImageResult : ActionResult     {         public WatermarkedImageResult() { }         public string ImageFileName { get; private set; }         public string WatermarkText { get; private set; }         public WatermarkedImageResult(string imageFileName, string watermarkText)         {             ImageFileName = imageFileName;             WatermarkText = watermarkText;         }         public override void ExecuteResult(ControllerContext context)         {             using (var image = Image.FromFile(ImageFileName))             using (var graphics = Graphics.FromImage(image))             using (var font = new Font("Arial", 10))             using (var memoryStream = new MemoryStream())             {                 // Render the watermark text in bottom-left corner                 var textSize = graphics.MeasureString(WatermarkText, font);                 graphics.DrawString(WatermarkText, font, Brushes.Black, 10,                     image.Height - textSize.Height - 10);                 // Transmit the image in PNG format (note: must buffer it in                 // memory first due to GDI+ limitation)284 CHAPTER 9 n CONTROLLERS AND ACTIONS                 image.Save(memoryStream, ImageFormat.Png);                 var response = context.RequestContext.HttpContext.Response;                 response.ContentType = "image/png";                 response.BinaryWrite(memoryStream.GetBuffer());             }         }     } }


使用:


public ActionResult ViewmarkedImage()         {              string ImageFileName = @"C:\Documents and Settings\Administrator\My Documents\My Pictures\oem.gif";             string WatermarkText = "这是我的水印";             WatermarkedImageResult result = new WatermarkedImageResult(ImageFileName, WatermarkText);             return result;         }