Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 14691|Risposta: 0

[ASP.NET] Usa il gestore generale (IHttpHandler) per creare una filigrana globale dell'immagine

[Copiato link]
Pubblicato su 10/09/2015 23:37:26 | | | |


Le filigrane servono a impedirci di rubare le nostre immagini.

Due modi per ottenere l'effetto filigrana

1) La filigrana può essere aggiunta quando l'utente carica.

a) Vantaggi: rispetto ai due metodi, il server invia questa immagine direttamente al cliente ogni volta che l'utente la legge.

b) Contro: distrugge l'immagine originale.

2) Attraverso il programma globale di elaborazione generale, quando l'utente richiede questa immagine, si aggiunge una filigrana.

a) Benefici: La foto originale non viene distrutta

b) Svantaggi: gli utenti devono affiancare le immagini richieste ogni volta che fanno una richiesta, sprecando le risorse del server.
  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. }
Copia codice
Il codice file per waterH.ashx è il seguente:

Poi devi configurare il seguente nodo sul web.config:

Sotto il nodo system.web
    <httpHandlers>
      <aggiungi verbo="*" path="Immagini/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

All'inizio, i nodi che ho configurato erano:
    <httpHandlers>
      <aggiungi verbo="*" path="Immagini/*.jpg" type="waterH"/>
    </httpHandlers>

segnala un errore,
Configurazione errata

Descrizione: Si è verificato un errore durante l'elaborazione del profilo necessario per fornire servizi alla richiesta. Si prega di verificare i dettagli specifici dell'errore qui sotto e di modificare il file di configurazione di conseguenza.

Messaggio di errore dell'analizzatrice: Fallita la carica del tipo "waterH".

Errore della fonte:


Riga 15: <system.web>
Riga 16<httpHandlers>:
Riga 17: <aggiungi verbo="*" path="Immagini/*.jpg" type="waterH"/>
Riga 18: </httpHandlers>
Riga 19: <compilation debug="true" targetFramework="4.0" />




Infine, inwaterH con il nome del progetto!
Infine, allega una copia del codice sorgente: Watermark.rar (234.64 KB, Numero di download: 0, 售价: 2 粒MB)




Precedente:360 Coolpad Zhou Hongyi e Jiang Chao si distruggono o fanno il buzz?
Prossimo:Il sito web si basa sull'idea del cavallo, e il trasferimento esterno è j/c
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com