Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14691|Atbildi: 0

[ASP.NET] Izmantojiet vispārējo apdarinātāju (IHttpHandler), lai izveidotu attēla globālo ūdenszīmi

[Kopēt saiti]
Publicēts 10.09.2015 23:37:26 | | | |


Ūdenszīmes ir paredzētas, lai neļautu mums nozagt mūsu attēlus.

Divi veidi, kā sasniegt ūdenszīmes efektu

1) Ūdenszīmi var pievienot, kad lietotājs augšupielādē.

a) Priekšrocības: Salīdzinot ar 2 metodēm, serveris nosūta šo attēlu tieši klientam katru reizi, kad lietotājs to lasa.

b) Mīnusi: Iznīcina oriģinālo attēlu.

2) Izmantojot globālo vispārējās apstrādes programmu, kad lietotājs pieprasa šo attēlu, pievienojiet ūdenszīmi.

a) Ieguvumi: oriģinālais attēls netiek iznīcināts

b) Trūkumi: Lietotājiem katru reizi, kad viņi veic pieprasījumu, ir jāatzīmē pieprasītie attēli, kas izšķērdē servera resursus.
  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. }
Kopēt kodu
waterH.ashx faila kods ir šāds:

Tad jums ir jākonfigurē šāds mezgls web.config:

Zem mezgla system.web
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Sākumā konfigurētie mezgli bija:
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

ziņos par kļūdu,
Nepareiza konfigurācija

Apraksts: apstrādājot profilu, kas nepieciešams, lai sniegtu pakalpojumus pieprasījumam, radās kļūda. Lūdzu, pārbaudiet tālāk norādīto informāciju par kļūdu un attiecīgi modificējiet konfigurācijas failu.

Analizatora kļūdas ziņojums: neizdevās ielādēt tipu "waterH".

Avota kļūda:


15. rinda: <system.web>
16. rinda<httpHandlers>:
17. rinda: <add verb="*" path="Images/*.jpg" type="waterH"/>
18. rinda: </httpHandlers>
19. rinda: <compilation debug="true" targetFramework="4.0" />




Visbeidzot,waterH ar projekta nosaukumu!
Visbeidzot, pievienojiet avota koda kopiju: Watermark.rar (234.64 KB, Lejupielādes skaits: 0, 售价: 2 粒MB)




Iepriekšējo:360 Coolpad Zhou Hongyi un Jiang Chao saplēš viens otru vai ažiotāžu?
Nākamo:Vietne js karājas uz zirga idejas, un ārējais pārsūtījums ir j / c
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com