Водните знаци са предназначени да ни предпазят от кражба на нашите изображения.
Два начина да се постигне ефектът на водния знак
1) Воден знак може да се добави при качване от потребителя.
a) Предимства: В сравнение с двата метода, сървърът изпраща това изображение директно на клиента всеки път, когато потребителят го прочете.
б) Минуси: Унищожава оригиналната картина.
2) Чрез глобалната обща програма за обработка, когато потребителят поиска това изображение, добавете воден знак.
a) Предимства: Оригиналната снимка не се унищожава
б) Недостатъци: Потребителите трябва да слагат воден знак на поисканите изображения всеки път, когато направят заявка, което изразходва ресурсите на сървъра.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Drawing;
- using System.IO;
- namespace Watermark
- {
- /// <summary>
- /// waterH 的摘要说明
- /// </summary>
- public class waterH : IHttpHandler
- {
- public waterH()
- { }
- private const string WATERMARK_URL = "~/Test/watermark.png";
- private const string DEFAULTIMAGE_URL = "~/Test/watermark.png";
- public void ProcessRequest(HttpContext context)
- {
- System.Drawing.Image Cover;
- if (File.Exists(context.Request.PhysicalPath))
- {
- Cover = Image.FromFile(context.Request.PhysicalPath);
- Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
- Graphics g = Graphics.FromImage(Cover);
- 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);
- g.Dispose();
- watermark.Dispose();
- }
- else
- {
- Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
- }
- context.Response.ContentType = "images/jpeg";
- Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
- Cover.Dispose();
- context.Response.End();
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }
- }
Копирай код Кодът на файла за 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)
|