Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14691|Atsakyti: 0

[ASP.NET] Naudokite bendrąją apdorojimo programą (IHttpHandler), kad sukurtumėte visuotinį vaizdo vandenženklį

[Kopijuoti nuorodą]
Paskelbta 2015-09-10 23:37:26 | | | |


Vandens ženklai skirti neleisti mums pavogti vaizdų.

Du būdai pasiekti vandens ženklo efektą

1) Vandens ženklas gali būti pridėtas, kai vartotojas įkelia.

a) Privalumai: Palyginti su 2 metodais, serveris siunčia šį vaizdą tiesiai klientui kiekvieną kartą, kai vartotojas jį perskaito.

b) Trūkumai: sunaikina originalų paveikslėlį.

2) Naudodamiesi pasauline bendrąja apdorojimo programa, kai vartotojas paprašo šio vaizdo, pridėkite vandens ženklą.

a) Privalumai: originali nuotrauka nesunaikinama

b) Trūkumai: Vartotojai kiekvieną kartą, kai pateikia užklausą, turi pažymėti prašomus vaizdus vandens ženklu, o tai eikvoja serverio išteklius.
  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. }
Kopijuoti kodą
waterH.ashx failo kodas yra toks:

Tada web.config turite sukonfigūruoti šį mazgą:

Pagal mazgą system.web
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Pradžioje mano sukonfigūruoti mazgai buvo:
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

praneš apie klaidą,
Netinkama konfigūracija

Aprašas: apdorojant profilį, reikalingą užklausai teikti paslaugas, įvyko klaida. Patikrinkite toliau pateiktą konkrečią klaidos informaciją ir atitinkamai pakeiskite konfigūracijos failą.

Analizatoriaus klaidos pranešimas: nepavyko įkelti tipo "waterH".

Šaltinio klaida:


15 eilutė: <system.web>
16 eilutė<httpHandlers>:
17 eilutė: <add verb="*" path="Images/*.jpg" type="waterH"/>
18 eilutė: </httpHandlers>
19 eilutė: <kompiliacija debug="true" targetFramework="4.0" />




Galiausiai,waterH su projekto pavadinimu!
Galiausiai pridėkite šaltinio kodo kopiją: Watermark.rar (234.64 KB, Atsisiuntimų skaičius: 0, 售价: 2 粒MB)




Ankstesnis:360 Coolpad Zhou Hongyi ir Jiang Chao suplėšyti vienas kitą atskirai ar hype?
Kitą:Svetainė js kabo ant arklio idėjos, o išorinis perdavimas yra j / c
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com