Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 14691|Svare: 0

[ASP.NET] Bruk den generelle handleren (IHttpHandler) for å lage et globalt vannmerke av bildet

[Kopier lenke]
Publisert på 10.09.2015 23:37:26 | | | |


Vannmerker er ment å hindre oss i å stjele bildene våre.

To måter å oppnå vannmerkeeffekten på

1) Vannmerket kan legges til når brukeren laster opp.

a) Fordeler: Sammenlignet med de to metodene sender serveren dette bildet direkte til kunden hver gang brukeren leser det.

b) Ulemper: Ødelegger originalbildet.

2) Gjennom det globale generelle behandlingsprogrammet, når brukeren ber om dette bildet, legg til et vannmerke.

a) Fordeler: Det originale bildet blir ikke ødelagt

b) Ulemper: Brukere må vannmerke de forespurte bildene hver gang de sender en forespørsel, noe som sløser bort serverens ressurser.
  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 koden
Filkoden for waterH.ashx er som følger:

Deretter må du konfigurere følgende node på web.config:

Under system.web-noden
    <httpHandlers>
      <legg til verb="*" sti="Bilder/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

I begynnelsen var nodene jeg konfigurerte:
    <httpHandlers>
      <legg til verb="*" sti="Bilder/*.jpg" type="vannH"/>
    </httpHandlers>

vil rapportere en feil,
Feilkonfigurasjon

Beskrivelse: En feil oppstod ved behandling av profilen som kreves for å levere tjenester til forespørselen. Vennligst sjekk de spesifikke feildetaljene nedenfor og endre konfigurasjonsfilen på riktig måte.

Analysator-feilmelding: Mislykket i å laste inn typen "waterH".

Kildefeil:


Linje 15: <system.web>
Linje 16<httpHandlers>:
Linje 17: <legg til verb="*" path="Images/*.jpg" type="waterH"/>
Linje 18: </httpHandlers>
Linje 19: <kompileringsdebug="true" targetFramework="4.0" />




Til slutt, iwaterH med navnet på prosjektet!
Til slutt, legg ved en kopi av kildekoden: Watermark.rar (234.64 KB, Antall nedlastinger: 0, 售价: 2 粒MB)




Foregående:360 Coolpad Zhou Hongyi og Jiang Chao hverandre i stykker eller hyper?
Neste:Nettsiden henger på hesteideen, og den eksterne overføringen er j/c
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com