Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 14691|Отговор: 0

[ASP.NET] Използвайте общия обработчик (IHttpHandler), за да направите глобален воден знак на изображението

[Копирай линк]
Публикувано в 10.09.2015 г. 23:37:26 ч. | | | |


Водните знаци са предназначени да ни предпазят от кражба на нашите изображения.

Два начина да се постигне ефектът на водния знак

1) Воден знак може да се добави при качване от потребителя.

a) Предимства: В сравнение с двата метода, сървърът изпраща това изображение директно на клиента всеки път, когато потребителят го прочете.

б) Минуси: Унищожава оригиналната картина.

2) Чрез глобалната обща програма за обработка, когато потребителят поиска това изображение, добавете воден знак.

a) Предимства: Оригиналната снимка не се унищожава

б) Недостатъци: Потребителите трябва да слагат воден знак на поисканите изображения всеки път, когато направят заявка, което изразходва ресурсите на сървъра.
  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. }
Копирай код
Кодът на файла за waterH.ashx е следният:

След това трябва да конфигурирате следния възел в web.config:

Под възела system.web
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

В началото възлите, които конфигурирах, бяха:
    <httpHandlers>
      <добави глагол="*" path="Изображения/*.jpg" тип="waterH"/>
    </httpHandlers>

ще докладва грешка,
Неправилна конфигурация

Описание: Възникна грешка при обработка на профила, необходим за предоставяне на услуги по заявката. Моля, проверете конкретните детайли за грешките по-долу и коригирайте конфигурационния файл съответно.

Съобщение за грешка в анализатора: Не успя да зареди тип "waterH".

Грешка в източника:


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




Накрая, вwaterH с името на проекта!
Накрая прикачете копие на изходния код: Watermark.rar (234.64 KB, Брой изтегляния: 0, 售价: 2 粒MB)




Предишен:360 Coolpad Чжоу Хонъи и Дзян Чао се разкъсват един друг или преувеличават?
Следващ:Уебсайтът js се базира на идеята за коня, а външният трансфер е j/c
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com