Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 14691|Répondre: 0

[ASP.NET] Utilisez le gestionnaire général (IHttpHandler) pour créer un filigrane global de l’image

[Copié le lien]
Publié sur 10/09/2015 23:37:26 | | | |


Les filigranes sont conçus pour nous empêcher de voler nos images.

Deux façons d’obtenir l’effet de filigrane

1) Un filigrane peut être ajouté lorsque l’utilisateur télécharge.

a) Avantages : Comparé aux deux méthodes, le serveur envoie cette image directement au client à chaque lecture de l’utilisateur.

b) Inconvénients : Détruit l’image originale.

2) Grâce au programme global de traitement général, lorsque l’utilisateur demande cette image, il faut ajouter un filigrane.

a) Avantages : L’image originale n’est pas détruite

b) Inconvénients : Les utilisateurs doivent filigraner les images demandées à chaque demande, ce qui gaspille les ressources du serveur.
  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. }
Code de copie
Le code de fichier pour waterH.ashx est le suivant :

Ensuite, vous devez configurer le nœud suivant sur le web.config :

Sous le nœud system.web
    <httpHandlers>
      <ajouter verbe="* » chemin="Images/*.jpg » type="Watermark.waterH"/>
    </httpHandlers>

Au début, les nœuds que j’ai configurés étaient :
    <httpHandlers>
      <ajouter verbe="* » chemin="Images/*.jpg » type="waterH"/>
    </httpHandlers>

signalera une erreur,
Mauvaise configuration

Description : Une erreur s’est produite lors du traitement du profil requis pour fournir les services à la demande. Veuillez vérifier les détails spécifiques de l’erreur ci-dessous et modifier le fichier de configuration en conséquence.

Message d’erreur de l’analyseur : Échec de charger le type « waterH ».

Erreur de source :


Ligne 15 : <system.web>
Ligne 16 <httpHandlers>:
Ligne 17 : <ajouter verbe="* » chemin="Images/*.jpg » type="waterH"/>
Ligne 18 : </httpHandlers>
Ligne 19 : <compilation debug="true » targetFramework="4.0 » />




Enfin, danswaterH avec le nom du projet !
Enfin, joignez une copie du code source : Watermark.rar (234.64 KB, Nombre de téléchargements: 0, 售价: 2 粒MB)




Précédent:360 Coolpad Zhou Hongyi et Jiang Chao se détruisent ou font du buzz ?
Prochain:Le site web dépend de l’idée du cheval, et le transfert externe est j/c
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com