Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14691|Odpoveď: 0

[ASP.NET] Použite všeobecný handler (IHttpHandler) na vytvorenie globálneho vodoznaku obrázka

[Kopírovať odkaz]
Zverejnené 10. 9. 2015 23:37:26 | | | |


Vodoznaky majú zabrániť tomu, aby sme kradli naše obrázky.

Dva spôsoby, ako dosiahnuť efekt vodoznaku

1) Vodoznak môže byť pridaný pri nahrávaní používateľom (watermark).

a) Výhody: V porovnaní s týmito dvoma metódami server posiela tento obrázok priamo zákazníkovi vždy, keď ho používateľ číta.

b) Nevýhody: Zničí pôvodný obraz.

2) Prostredníctvom globálneho všeobecného spracovateľského programu, keď používateľ požiada o tento obrázok, pridá vodotlač.

a) Výhody: Pôvodný obraz nie je zničený

b) Nevýhody: Používatelia musia pri každej požiadavke označovať požadované obrázky vodoznakom, čo plytvá zdrojmi servera.
  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. }
Kopírovať kód
Kód súboru waterH.ashx je nasledovný:

Potom musíte nakonfigurovať nasledujúci uzol vo web.config:

Pod uzlom system.web
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Na začiatku som konfiguroval uzly:
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

nahlási chybu,
Nesprávna konfigurácia

Popis: Pri spracovaní profilu potrebného na poskytnutie služieb požiadavke došlo k chybe. Prosím, skontrolujte konkrétne chybové detaily nižšie a primerane upravte konfiguračný súbor.

Chybové hlásenie analyzátora: Neúspešné načítanie typu "waterH".

Chyba zdroja:


Riadok 15: <system.web>
Riadok 16<httpHandlers>:
Riadok 17: <pridať sloveso="*" cesta="Images/*.jpg" type="waterH"/>
Riadok 18: </httpHandlers>
Riadok 19: <kompilácia debug="true" targetFramework="4.0" />




Nakoniec, vwaterH s názvom projektu!
Nakoniec priložite kópiu zdrojového kódu: Watermark.rar (234.64 KB, Počet stiahnutí: 0, 售价: 2 粒MB)




Predchádzajúci:360 Coolpad Zhou Hongyi a Jiang Chao sa navzájom roztrhajú alebo hypeujú?
Budúci:Web js visí na nápade s koňom a externý prenos je j/c
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com