Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 14691|Válasz: 0

[ASP.NET] Használd az általános kezelőt (IHttpHandler) globális vízjeljel készítéséhez a képről

[Linket másol]
Közzétéve 2015. 09. 10. 23:37:26 | | | |


A vízjelek célja, hogy megakadályozzák, hogy ellopjuk a képeinket.

Két módja a vízjelző hatás elérésének

1) Vízjel hozzáadható a felhasználó feltöltésekor is.

a) Előnyök: A két módszerhez képest a szerver minden alkalommal közvetlenül elküldi ezt a képet az ügyfélnek, amikor a felhasználó elolvassa.

b) Hátrányok: Megsemmisíti az eredeti képet.

2) A globális általános feldolgozó programon keresztül, amikor a felhasználó kéri ezt a képet, vízjelet adjon hozzá.

a) Előnyök: Az eredeti kép nem pusztult el

b) Hátrányok: A felhasználóknak minden kérésnél vízjelet kell jelölniük a kért képekre, ami a szerver erőforrásait pazarolja.
  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. }
Kód másolása
A waterH.ashx fájlkódja a következő:

Ezután a web.config következő csomópontját kell konfigurálnod:

A system.web csomópont alatt
    <httpHandlers>
      <add ige="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Kezdetben a beállítottam csomópontok a következők voltak:
    <httpHandlers>
      <ige hozzáadása ="*" path="Képek/*.jpg" type="waterH"/>
    </httpHandlers>

hibát jelent,
Félrevezetés

Leírás: Hiba történt a szolgáltatásnyújtáshoz szükséges profil feldolgozása során. Kérjük, nézze meg az alábbi konkrét hibarészleteket, és módosítsa megfelelően a konfigurációs fájlt.

Elemző hibaüzenet: Nem sikerült betölteni a "waterH" típusú típust.

Forráshiba:


15. sor: <system.web>
16. sor<httpHandlers>:
17. sor: <add hozzá ige="*" path="Images/*.jpg" type="waterH"/>
18. sor: </httpHandlers>
19. sor: <compile debug="true" targetFramework="4.0" />




Végül,waterH a projekt nevével!
Végül csatoljon hozzá egy példányt a forráskódból: Watermark.rar (234.64 KB, Letöltések száma: 0, 售价: 2 粒MB)




Előző:360 Coolpad Zhou Hongyi és Jiang Chao széttépik egymást vagy felhajtás?
Következő:A js weboldal a ló ötletén függ, a külső áthelyezés pedig j/c
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com