Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 14691|Svar: 0

[ASP.NET] Använd den allmänna hanteraren (IHttpHandler) för att skapa en global vattenstämpel av bilden

[Kopiera länk]
Publicerad på 2015-09-10 23:37:26 | | | |


Vattenstämplar är till för att förhindra att vi stjäl våra bilder.

Två sätt att uppnå vattenstämpelseffekten

1) Vattenstämpel kan läggas till när användaren laddar upp.

a) Fördelar: Jämfört med de två metoderna skickar servern denna bild direkt till kunden varje gång användaren läser den.

b) Nackdelar: Förstör originalbilden.

2) Genom det globala allmänna bearbetningsprogrammet, när användaren begär denna bild, lägg till en vattenstämpel.

a) Fördelar: Den ursprungliga bilden förstörs inte

b) Nackdelar: Användare måste vattenmärka de begärda bilderna varje gång de gör en förfrågan, vilket slösar serverns resurser.
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Drawing;
  6. using System.IO;

  7. namespace Watermark
  8. {

  9.     /// <summary>
  10.     /// waterH 的摘要说明
  11.     /// </summary>
  12.     public class waterH : IHttpHandler
  13.     {
  14.         public waterH()
  15.         { }
  16.         private const string WATERMARK_URL = "~/Test/watermark.png";
  17.         private const string DEFAULTIMAGE_URL = "~/Test/watermark.png";
  18.         public void ProcessRequest(HttpContext context)
  19.         {
  20.             System.Drawing.Image Cover;
  21.             if (File.Exists(context.Request.PhysicalPath))
  22.             {
  23.                 Cover = Image.FromFile(context.Request.PhysicalPath);
  24.                 Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
  25.                 Graphics g = Graphics.FromImage(Cover);
  26.                 g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
  27.                 g.Dispose();
  28.                 watermark.Dispose();
  29.             }
  30.             else
  31.             {
  32.                 Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
  33.             }
  34.             context.Response.ContentType = "images/jpeg";
  35.             Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
  36.             Cover.Dispose();
  37.             context.Response.End();
  38.         }

  39.         public bool IsReusable
  40.         {
  41.             get
  42.             {
  43.                 return false;
  44.             }
  45.         }
  46.     }
  47. }
Kopiera koden
Filkoden för waterH.ashx är följande:

Sedan behöver du konfigurera följande nod på web.config:

Under system.web-noden
    <httpHandlers>
      <lägg till verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

I början var de noder jag konfigurerade:
    <httpHandlers>
      <lägg till verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

kommer att rapportera ett fel,
Felkonfiguration

Beskrivning: Ett fel uppstod vid bearbetning av profilen som krävs för att tillhandahålla tjänster till förfrågan. Vänligen kontrollera de specifika feldetaljerna nedan och ändra konfigurationsfilen på rätt sätt.

Analysatorns felmeddelande: Misslyckades med att ladda typ "waterH".

Källafel:


Rad 15: <system.web>
Rad 16<httpHandlers>:
Rad 17: <lägg till verb="*" path="Images/*.jpg" type="waterH"/>
Rad 18: </httpHandlers>
Rad 19: <kompileringsdebug="true" targetFramework="4.0" />




Slutligen, ivattenH med projektets namn!
Slutligen, bifoga en kopia av källkoden: Watermark.rar (234.64 KB, Antal nedladdningar: 0, 售价: 2 粒MB)




Föregående:360 Coolpad Zhou Hongyi och Jiang Chao sliter varandra i stycken eller hypar?
Nästa:Webbplatsen bygger på hästidén, och den externa överföringen är j/c
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com