bookcover.ashx

来自「一个网上书店的源码」· ASHX 代码 · 共 53 行

ASHX
53
字号
<%@ WebHandler Language="C#" Class="BookCover"  %>

using System;
using System.Web;
using System.Drawing;
using System.IO;

public class BookCover : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {        
        
        string path = context.Request.MapPath("~/Images/BookCovers/" + context.Request.Params["ISBN"].ToString());

        if (!File.Exists(path + "_new.jpg"))
        {
            MakeNewImage(path, context.Request.MapPath("~/Images/watermark.jpg"), context.Request.MapPath("~/Images/watermark.jpg"));
        }
        context.Response.ContentType = "image/jpeg";
        context.Response.WriteFile(path + "_new.jpg");
    }

    /// <summary>
    /// 当添加数字水印的图片没有时,绘制有数字水印的图片
    /// </summary>
    /// <param name="road">图片路径</param>
    /// <param name="watermarkroad">数字水印路径</param>
    /// <param name="defaultimage">默认图片路径</param>
    public void MakeNewImage(string road, string watermarkroad,string defaultimage)
    {
        System.Drawing.Image image;
        if (!File.Exists(road + ".jpg"))
        {
            image = System.Drawing.Image.FromFile(defaultimage);
        }
        else
        {
            image = System.Drawing.Image.FromFile(road + ".jpg");
        }
        System.Drawing.Image watermark = System.Drawing.Image.FromFile(watermarkroad);
        Graphics g = Graphics.FromImage(image);
        g.DrawImage(watermark, new Rectangle(image.Width - watermark.Width, image.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
        g.Dispose();
        watermark.Dispose();        
        string newPath = road + "_new.jpg";
        image.Save(newPath);
        image.Dispose();
    }
    public bool IsReusable {
        get {
            return false;
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?