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

最新评论