Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 14691|Antwort: 0

[ASP.NET] Verwenden Sie den allgemeinen Handler (IHttpHandler), um ein globales Wasserzeichen des Bildes zu erstellen

[Link kopieren]
Veröffentlicht am 10.09.2015 23:37:26 | | | |


Wasserzeichen sollen verhindern, dass wir unsere Bilder stehlen.

Zwei Möglichkeiten, den Wasserzeichen-Effekt zu erzielen

1) Wasserzeichen kann hinzugefügt werden, wenn der Nutzer es hochlädt.

a) Vorteile: Im Vergleich zu den beiden Methoden sendet der Server dieses Bild jedes Mal direkt an den Kunden, wenn der Nutzer es liest.

b) Nachteile: Zerstört das Originalbild.

2) Durch das globale allgemeine Verarbeitungsprogramm fügt der Benutzer bei der Anforderung dieses Bildes ein Wasserzeichen hinzu.

a) Vorteile: Das Originalbild wird nicht zerstört

b) Nachteile: Nutzer müssen die angeforderten Bilder jedes Mal mit Wassermarkierung versehen, wenn sie eine Anfrage stellen, was die Ressourcen des Servers verschwendet.
  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. }
Code kopieren
Der Dateicode für waterH.ashx lautet wie folgt:

Dann musst du den folgenden Knoten im web.config konfigurieren:

Unter dem System.web-Knoten
    <httpHandlers>
      <Verb hinzufügen="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Am Anfang waren die von mir konfigurierten Knoten:
    <httpHandlers>
      <Verb hinzufügen="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

wird einen Fehler melden,
Fehlkonfiguration

Beschreibung: Ein Fehler trat bei der Verarbeitung des Profils auf, das zur Bereitstellung der Dienste für die Anfrage erforderlich ist. Bitte überprüfen Sie die untenstehenden spezifischen Fehlerdetails und ändern Sie die Konfigurationsdatei entsprechend.

Fehlermeldung des Analysators: Fehlgeschlagen beim Laden des Typs "waterH".

Quellfehler:


Zeile 15: <system.web>
Zeile 16<httpHandlers>:
Zeile 17: <Verb hinzufügen="*" path="Images/*.jpg" type="waterH"/>
Zeile 18: </httpHandlers>
Zeile 19: <Kompilierungsdebug="true" targetFramework="4.0" />




Schließlich, inwaterH mit dem Namen des Projekts!
Fügen Sie schließlich eine Kopie des Quellcodes bei: Watermark.rar (234.64 KB, Anzahl der Downloads: 0, 售价: 2 粒MB)




Vorhergehend:360 Coolpad Zhou Hongyi und Jiang Chao zerreißen sich gegenseitig oder hypen?
Nächster:Die Website JS hängt an der Pferde-Idee, und der externe Transfer ist j/c
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com