Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 14691|Jawab: 0

[ASP.NET] Gunakan penangan umum (IHttpHandler) untuk membuat tanda air global gambar

[Salin tautan]
Diposting pada 10/09/2015 23.37.26 | | | |


Tanda air dimaksudkan untuk mencegah kita mencuri gambar kita.

Dua cara untuk mencapai efek tanda air

1) Tanda air dapat ditambahkan saat pengguna mengunggah.

a) Manfaat: Dibandingkan dengan 2 metode, server mengirimkan gambar ini langsung ke pelanggan setiap kali pengguna membacanya.

b) Kekurangan: Menghancurkan gambar aslinya.

2) Melalui program pemrosesan umum global, ketika pengguna meminta gambar ini, tambahkan tanda air.

a) Manfaat: Gambar asli tidak hancur

b) Kekurangan: Pengguna perlu memberi tanda air pada gambar yang diminta setiap kali mereka membuat permintaan, yang membuang-buang sumber daya server.
  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. }
Salin kode
Kode file untuk waterH.ashx adalah sebagai berikut:

Kemudian Anda perlu mengonfigurasi node berikut di web.config:

Di bawah simpul system.web
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/>
    </httpHandlers>

Pada awalnya, node yang saya konfigurasikan adalah:
    <httpHandlers>
      <add verb="*" path="Images/*.jpg" type="waterH"/>
    </httpHandlers>

akan melaporkan kesalahan,
Salah konfigurasi

Deskripsi: Terjadi kesalahan saat memproses profil yang diperlukan untuk menyediakan layanan ke permintaan. Silakan periksa detail kesalahan spesifik di bawah ini dan ubah file konfigurasi dengan tepat.

Pesan kesalahan penganalisis: Gagal memuat jenis "waterH".

Kesalahan sumber:


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




Akhirnya, diwaterH dengan nama proyek!
Terakhir, lampirkan salinan kode sumber: Watermark.rar (234.64 KB, Jumlah unduhan: 0, 售价: 2 粒MB)




Mantan:360 Coolpad Zhou Hongyi dan Jiang Chao saling merobek atau hype?
Depan:Situs web js tergantung pada ide kuda, dan transfer eksternal adalah j/c
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com