Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 14691|Svar: 0

[ASP.NET] Brug den generelle handler (IHttpHandler) til at lave et globalt vandmærke af billedet

[Kopier link]
Opslået på 10/09/2015 23.37.26 | | | |


Vandmærker er ment til at forhindre os i at stjæle vores billeder.

To måder at opnå vandmærkeeffekten på

1) Vandmærke kan tilføjes, når brugeren uploader.

a) Fordele: Sammenlignet med de to metoder sender serveren dette billede direkte til kunden hver gang brugeren læser det.

b) Ulemper: Ødelægger det originale billede.

2) Gennem det globale generelle behandlingsprogram, når brugeren anmoder om dette billede, tilføj et vandmærke.

a) Fordele: Det oprindelige billede bliver ikke ødelagt

b) Ulemper: Brugere skal vandmærke de ønskede billeder hver gang, de laver en anmodning, hvilket spilder serverens ressourcer.
  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. }
Kopier kode
Filkoden for waterH.ashx er som følger:

Derefter skal du konfigurere følgende node på web.config:

Under system.web-noden
    <httpHandlers>
      <tilføj verbum="*" sti="Billeder/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

I begyndelsen var de noder, jeg konfigurerede:
    <httpHandlers>
      <tilføj verb="*" sti="Billeder/*.jpg" type="waterH"/>
    </httpHandlers>

vil rapportere en fejl,
Fejlkonfiguration

Beskrivelse: En fejl opstod ved behandlingen af profilen, der kræves for at levere tjenester til forespørgslen. Tjek venligst de specifikke fejloplysninger nedenfor og ændr konfigurationsfilen korrekt.

Analysatorfejlmeddelelse: Fejlede i indlæsningen af typen "waterH".

Kildefejl:


Linje 15: <system.web>
Linje 16<httpHandlers>:
Linje 17: <tilføj verbum="*" sti="Billeder/*.jpg" type="waterH"/>
Linje 18: </httpHandlers>
Linje 19: <kompileringsdebug="true" targetFramework="4.0" />




Endelig, iwaterH med projektets navn!
Endelig vedhæfter du en kopi af kildekoden: Watermark.rar (234.64 KB, Antal downloads: 0, 售价: 2 粒MB)




Tidligere:360 Coolpad Zhou Hongyi og Jiang Chao river hinanden fra hinanden eller hyper?
Næste:Hjemmesiden hænger på hesteideen, og den eksterne overførsel er j/c
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com