Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 14691|Odpověď: 0

[ASP.NET] Použijte obecný handler (IHttpHandler) k vytvoření globálního vodoznaku obrázku

[Kopírovat odkaz]
Zveřejněno 10.09.2015 23:37:26 | | | |


Vodoznaky mají zabránit tomu, abychom nám ukradli naše obrázky.

Dva způsoby, jak dosáhnout efektu vodoznaku

1) Vodoznak lze přidat při nahrávání uživatelem.

a) Výhody: Ve srovnání se dvěma metodami server posílá tento obrázek přímo zákazníkovi pokaždé, když ho uživatel čte.

b) Nevýhody: Zničí původní obrázek.

2) Prostřednictvím globálního programu pro obecné zpracování, když uživatel požádá o tento obrázek, přidejte vodoznak.

a) Výhody: Původní obraz není zničen

b) Nevýhody: Uživatelé musí při každém žádosti označovat požadované obrázky vodoznakem, což plýtvá zdroji serveru.
  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írovat kód
Kód souboru waterH.ashx je následující:

Pak musíte nakonfigurovat následující uzel ve web.config:

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

Na začátku jsem nastavil uzly:
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

nahlásí chybu,
Nesprávné nastavení

Popis: Při zpracování profilu potřebného k poskytnutí služeb požadavku došlo k chybě. Zkontrolujte prosím podrobnosti o chybě níže a upravte konfigurační soubor podle potřeby.

Chybová zpráva analyzátoru: Nepodařilo se načíst typ "waterH".

Chyba zdroje:


Řádek 15: <system.web>
Řádek 16<httpHandlers>:
Řádek 17: <přidat sloveso="*" cestu="Images/*.jpg" type="waterH"/>
Řádek 18: </httpHandlers>
Řádek 19: <kompilace ladění="true" targetFramework="4.0" />




Nakonec vwaterH s názvem projektu!
Nakonec přiložte kopii zdrojového kódu: Watermark.rar (234.64 KB, Počet stažení: 0, 售价: 2 粒MB)




Předchozí:360 Coolpad Zhou Hongyi a Jiang Chao se navzájem roztrhávají, nebo hypeují?
Další:Web js visí na nápadu s koněm a externí přenos je j/c
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com