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.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Drawing;
- using System.IO;
- namespace Watermark
- {
- /// <summary>
- /// waterH 的摘要说明
- /// </summary>
- public class waterH : IHttpHandler
- {
- public waterH()
- { }
- private const string WATERMARK_URL = "~/Test/watermark.png";
- private const string DEFAULTIMAGE_URL = "~/Test/watermark.png";
- public void ProcessRequest(HttpContext context)
- {
- System.Drawing.Image Cover;
- if (File.Exists(context.Request.PhysicalPath))
- {
- Cover = Image.FromFile(context.Request.PhysicalPath);
- Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
- Graphics g = Graphics.FromImage(Cover);
- 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);
- g.Dispose();
- watermark.Dispose();
- }
- else
- {
- Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
- }
- context.Response.ContentType = "images/jpeg";
- Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
- Cover.Dispose();
- context.Response.End();
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }
- }
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)
|