Watermerken zijn bedoeld om te voorkomen dat we onze beelden stelen.
Twee manieren om het watermerkeffect te bereiken
1) Watermerk kan worden toegevoegd wanneer de gebruiker uploadt.
a) Voordelen: In vergelijking met de twee methoden stuurt de server deze afbeelding elke keer dat de gebruiker deze leest direct naar de klant.
b) Nadelen: Vernietigt het originele beeld.
2) Via het globale algemene verwerkingsprogramma voegt de gebruiker bij het aanvragen van deze afbeelding een watermerk toe.
a) Voordelen: De originele afbeelding wordt niet vernietigd
b) Nadelen: Gebruikers moeten de gevraagde afbeeldingen elke keer dat ze een verzoek indienen, watermarken, wat de middelen van de server verspilt.
- 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;
- }
- }
- }
- }
Code kopiëren De bestandscode voor waterH.ashx is als volgt:
Daarna moet je de volgende node configureren op web.config:
Onder de system.web-node
<httpHandlers> <voeg verb toe="*" pad="Afbeeldingen/*.jpg" type="Watermark.waterH"/> </httpHandlers> Aan het begin waren de knooppunten die ik configureerde:
<httpHandlers> <voeg werkwoord toe="*" pad="Afbeeldingen/*.jpg" type="waterH"/> </httpHandlers> zal een fout rapporteren,
Verkeerde configuratie
Beschrijving: Er trad een fout op bij het verwerken van het profiel dat nodig was om diensten aan het verzoek te leveren. Controleer alstublieft de specifieke foutgegevens hieronder en wijzig het configuratiebestand op de juiste manier.
Analyzer foutmelding: Niet geladen door type "waterH".
Bronfout:
Regel 15: <system.web> Regel 16<httpHandlers>: Regel 17: <voeg werkwoord toe="*" pad="Afbeeldingen/*.jpg" type="waterH"/> Regel 18: </httpHandlers> Regel 19: <compilatie debug="true" targetFramework="4.0" />
Ten slotte, inwaterH met de naam van het project!
Voeg tot slot een kopie van de broncode toe:
Watermark.rar
(234.64 KB, Aantal downloads: 0, 售价: 2 粒MB)
|