Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 14691|Odgovoriti: 0

[ASP.NET] Uporabite splošni handler (IHttpHandler) za ustvarjanje globalnega vodnega žiga slike

[Kopiraj povezavo]
Objavljeno na 10. 09. 2015 23:37:26 | | | |


Vodni žigi so namenjeni temu, da nam preprečijo krajo naših slik.

Dva načina za dosego učinka vodnega žiga

1) Vodni žig se lahko doda ob nalaganju uporabnika.

a) Prednosti: V primerjavi z obema metodama strežnik to sliko neposredno pošlje stranki vsakič, ko jo uporabnik prebere.

b) Slabosti: Uniči izvirno sliko.

2) Preko globalnega programa za splošno obdelavo, ko uporabnik zahteva to sliko, doda vodni žig.

a) Prednosti: Izvirna slika ni uničena

b) Slabosti: Uporabniki morajo zahtevane slike vsakič, ko oddajo zahtevo, z vodnim žigom, kar zapravlja vire strežnika.
  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. }
Kopiraj kodo
Koda datoteke za waterH.ashx je naslednja:

Nato morate konfigurirati naslednje vozlišče na web.config:

Pod vozliščem system.web
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Na začetku so bila vozlišča, ki sem jih konfiguriral, naslednja:
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

bo poročal o napaki,
Napačna konfiguracija

Opis: Prišlo je do napake pri obdelavi profila, potrebnega za zagotavljanje storitev zahtevi. Prosimo, preverite podrobnosti napake spodaj in ustrezno prilagodite konfiguracijsko datoteko.

Sporočilo o napaki analizatorja: Ni uspelo naložiti tipa "waterH".

Napaka vira:


Vrstica 15: <system.web>
Vrstica 16<httpHandlers>:
Vrstica 17: <dodaj glagol="*" path="Images/*.jpg" type="waterH"/>
Vrstica 18: </httpHandlers>
Vrstica 19: <debug prevajanja="true" targetFramework="4.0" />




Nazadnje, vwaterH z imenom projekta!
Na koncu priložite kopijo izvorne kode: Watermark.rar (234.64 KB, Število prenosov: 0, 售价: 2 粒MB)




Prejšnji:360 Coolpad Zhou Hongyi in Jiang Chao se raztrgata ali navduševata?
Naslednji:Spletna stran js visi na ideji o konju, zunanji prenos pa je j/c
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com