Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14691|Antwoord: 0

[ASP.NET] Gebruik de algemene handler (IHttpHandler) om een globaal watermerk van de afbeelding te maken

[Link kopiëren]
Geplaatst op 10-09-2015 23:37:26 | | | |


Watermerken zijn bedoeld om te voorkomen dat we onze beelden stelen.

Twee manieren om het watermerkeffect te bereiken

1) Watermerk kan worden toegevoegd wanneer de gebruiker uploadt.

a) Voordelen: In vergelijking met de twee methoden stuurt de server deze afbeelding elke keer dat de gebruiker deze leest direct naar de klant.

b) Nadelen: Vernietigt het originele beeld.

2) Via het globale algemene verwerkingsprogramma voegt de gebruiker bij het aanvragen van deze afbeelding een watermerk toe.

a) Voordelen: De originele afbeelding wordt niet vernietigd

b) Nadelen: Gebruikers moeten de gevraagde afbeeldingen elke keer dat ze een verzoek indienen, watermarken, wat de middelen van de server verspilt.
  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 kopiëren
De bestandscode voor waterH.ashx is als volgt:

Daarna moet je de volgende node configureren op web.config:

Onder de system.web-node
    <httpHandlers>
      <voeg verb toe="*" pad="Afbeeldingen/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Aan het begin waren de knooppunten die ik configureerde:
    <httpHandlers>
      <voeg werkwoord toe="*" pad="Afbeeldingen/*.jpg" type="waterH"/>
    </httpHandlers>

zal een fout rapporteren,
Verkeerde configuratie

Beschrijving: Er trad een fout op bij het verwerken van het profiel dat nodig was om diensten aan het verzoek te leveren. Controleer alstublieft de specifieke foutgegevens hieronder en wijzig het configuratiebestand op de juiste manier.

Analyzer foutmelding: Niet geladen door type "waterH".

Bronfout:


Regel 15: <system.web>
Regel 16<httpHandlers>:
Regel 17: <voeg werkwoord toe="*" pad="Afbeeldingen/*.jpg" type="waterH"/>
Regel 18: </httpHandlers>
Regel 19: <compilatie debug="true" targetFramework="4.0" />




Ten slotte, inwaterH met de naam van het project!
Voeg tot slot een kopie van de broncode toe: Watermark.rar (234.64 KB, Aantal downloads: 0, 售价: 2 粒MB)




Vorig:360 Coolpad Zhou Hongyi en Jiang Chao scheuren elkaar uit elkaar of hypen?
Volgend:De website JS hangt aan het paardenidee, en de externe overdracht is j/c
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com