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