ASP.NET實現圖片自動添加水印

 更新時間:2020-06-14 00:02:06   作者:佚名   我要評論(0)

本文實例為大家分享了ASP.NET實現圖片自動添加水印的具體代碼,供大家參考,具體內容如下
先建一個類,感覺注釋已經很詳細了,有不懂的歡迎評論


using System;
us

本文實例為大家分享了ASP.NET實現圖片自動添加水印的具體代碼,供大家參考,具體內容如下

先建一個類,感覺注釋已經很詳細了,有不懂的歡迎評論

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web;

namespace shuiyin
{
 public class Water : IHttpHandler
 {
  /*
   這個IsReusable的true是可以提高效率但是,會線程不安全
   IHttpHandler實例可以再次使用

   false,會安全一些,效率會低一些
   IHttpHandler的實例就不能使用 
    */
  public bool IsReusable => true;
  //水印
  private const string Water_Url = "~/Images/watermark.png";
  //沒有圖片的時候使用
  private const string None_Picture = "~/Error/default.jpg";

  public void ProcessRequest(HttpContext context)
  {
   //獲取圖片的物理路徑
   string path = context.Request.PhysicalPath;
   Image image;
   //如果我當前項目中有這個圖片,就可以進行加水印操作
   if (File.Exists(path))
   {
    //獲取指定的圖片(要添加水印的圖片)
    image = Image.FromFile(path);
    //再找到,要添加的水印
    Image image_Water = Image.FromFile(context.Server.MapPath(Water_Url));
    //使用畫圖的類,獲取圖片
    Graphics graphics = Graphics.FromImage(image);
    //畫圖方法,第一個參數就是要添加的水印
    graphics.DrawImage(image_Water,
     //第二個參數是一個坐標的問題,從x1,y1坐標開始,繪制的水印的長度和寬度,
     //一共四個參數,x1,y1,水印的長度,寬度
     new Rectangle(image.Width - image_Water.Width, image.Height - image_Water.Height, image_Water.Width, image_Water.Height),
     //從上一個參數獲取的位置開始作為新的區域
     //新區域的0,0開始,也是寬度和長度,
     //最后一個參數就是,像素的問題,多少像素
     0, 0, image_Water.Width, image_Water.Height,GraphicsUnit.Pixel);
    //使用完了,把兩個圖片的資源都釋放掉
    graphics.Dispose();
    image_Water.Dispose();
   }
   else
   {
    //這里是如果沒有指定的圖片的話,就用一個找不到的圖片去代替
    image = Image.FromFile(context.Server.MapPath(None_Picture));
   }
   //新圖片的類型
   context.Response.ContentType = "Image/Jpeg";
   //把新圖片進行保存,輸出流和格式
   image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
   //使用完保存,釋放掉圖片的資源,結束
   image.Dispose();
   context.Response.End();


  }
 }
}

修改配置文件

<system.webServer>
 <handlers>
  <add verb="*" name="image_Water" path="Images/*.jpg" type="shuiyin.Water"/>
 </handlers>
</system.webServer>

path是加水印圖片的地址,type是那個類的路徑:
也就是命名空間 .(點)類名

一個簡單的web窗體

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ThreePicture_Water.aspx.cs" Inherits="shuiyin.ThreePicture_Water" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title></title>
</head>
<body>
 <form id="form1" runat="server">
  <div>
   <img src="Images/adv1.jpg" />
   <img src="Images/adv2.jpg" />
   <img src="Images/adv3.jpg" />
  </div>
 </form>
</body>
</html>

效果圖

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

  • 如何在ASP.NET Core中給上傳圖片功能添加水印實例代碼
  • ASP.NET百度Ueditor編輯器實現上傳圖片添加水印效果
  • Asp.net開發之webform圖片水印和圖片驗證碼的實現方法
  • asp.net繼承IHttpHandler接口實現給網站圖片添加水印功能實例
  • ASP.NET簡單好用功能齊全圖片上傳工具類(水印、縮略圖、裁剪等)
  • Asp.net簡單實現給圖片增加文字水印
  • asp.net如何在圖片上加水印文字具體實現
  • asp.net上傳圖片并作處理水印與縮略圖的實例代碼
  • ASP.NET 圖片加水印防盜鏈實現代碼
  • asp.net中上傳圖片文件實現防偽圖片水印并寫入數據庫

相關文章

  • ASP.NET實現圖片自動添加水印

    ASP.NET實現圖片自動添加水印

    本文實例為大家分享了ASP.NET實現圖片自動添加水印的具體代碼,供大家參考,具體內容如下 先建一個類,感覺注釋已經很詳細了,有不懂的歡迎評論 using System; us
    2020-06-14
  • ASP.NET生成驗證碼的方法

    ASP.NET生成驗證碼的方法

    本文實例為大家分享了ASP.NET生成驗證碼的具體代碼,供大家參考,具體內容如下 首先,添加一個一般處理程序 注釋很詳細了,有不懂的歡迎評論 using System; usin
    2020-06-14
  • 1個文件如何輕松搞定Asp.net core 3.1動態頁面轉靜態頁面

    1個文件如何輕松搞定Asp.net core 3.1動態頁面轉靜態頁面

    前言 最近一個Asp.net core項目需要靜態化頁面,百度查找了一下,沒有發現合適的。原因如下 配置麻煩。 類庫引用了第三方類,修改起來麻煩。 有只支持MVC,不
    2020-06-14
  • ASP.NET Core3.x API版本控制的實現

    ASP.NET Core3.x API版本控制的實現

    前言 一般來說需要更改我們API的時候才考慮版本控制,但是我覺得我們不應該等到那時候來實現它,我們應該有一個版本策略從我們應用程序開發時就開始制定好我們的
    2020-06-14
  • Asp.net Core中實現自定義身份認證的示例代碼

    Asp.net Core中實現自定義身份認證的示例代碼

    Asp.Net Core中雖然集成了許多常用的身份認證,但很多時候,我們還是需要實現自己的身份認證接口,本文這里就簡單的介紹下如何實現自定義身份認證接口。 首先寫一個
    2020-06-14
  • ASP.NET Core WebAPI實現本地化(單資源文件)

    ASP.NET Core WebAPI實現本地化(單資源文件)

    在Startup ConfigureServices 注冊本地化所需要的服務AddLocalization和 Configure<RequestLocalizationOptions> public void ConfigureServices(IServiceCollec
    2020-06-14
  • 關于.NET Attribute在數據校驗中的應用教程

    關于.NET Attribute在數據校驗中的應用教程

    前言 Attribute(特性)的概念不在此贅述了,相信有點.NET基礎的開發人員都明白,用過Attribute的人也不在少數,畢竟很多框架都提供自定義的屬性,類似于Newtonsoft
    2020-06-14
  • ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法

    ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法

    說明 本章主要說明如何使用Magicodes.IE.Csv進行Csv導入導出. 關于Magicodes.IE 導入導出通用庫,通過導入導出DTO模型來控制導入和導出,支持Excel、Word、Pd
    2020-06-14
  • .net core 3.1在iis上發布的踩坑記錄

    .net core 3.1在iis上發布的踩坑記錄

    前言 寫這篇文章的目的是希望像我一樣喜歡.net 的人在發布 core到 iis上時少走點彎路 網上找了些資料,其實實際操作比較簡單,就是有幾個坑很惡心 踩坑記錄 首先是你
    2020-06-14
  • .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)

    .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)

    依賴倒置原則(DIP) 依賴倒置(Dependency Inversion Principle,縮寫DIP)是面向對象六大基本原則之一。他是指一種特定的的解耦形式,使得高層次的模塊不依賴低層次的
    2020-06-14

最新評論

买宝宝用品赚钱吗 湖南快乐十分遗漏数据爱彩乐 陕西省快乐十分开奖结果今天 京东方股票代码 广西快3遗漏统计值114 基金配资合法性 山西快乐10分走势图推荐 群英会规则及奖金分配 河北福彩排列七玩法 pk10滚雪球计划app 山东4.97亿大奖作假 新疆11选5走势图 广东省体育彩票网11选5 重庆彩开奖结果查询 福建31选7开奖号码20022 快乐10分走势图快乐十分走势图 黑龙江6+1历史开奖全记录