如何编写ASP.NET图片加水印及防盗链功能的完整实现代码?

在互联网上,版权保护是一个永恒的话题,对于网站来说,防止他人盗用图片是维护自身权益的重要一环,ASP.NET作为一种流行的Web开发框架,可以通过添加水印和防盗链技术来保护图片不被非法使用,以下是如何在ASP.NET中实现图片加水印和防盗链的详细步骤和代码示例。

如何编写ASP.NET图片加水印及防盗链功能的完整实现代码?

添加水印

准备水印图片

你需要准备一个水印图片,通常是一个透明背景的PNG图片。

编写C#代码

在ASP.NET中,你可以使用System.Drawing命名空间中的Graphics类来在图片上绘制水印。

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Web;
public static string AddWatermark(string originalImagePath, string watermarkPath, string outputImagePath)
{
    using (Image originalImage = Image.FromFile(originalImagePath))
    {
        using (Image watermark = Image.FromFile(watermarkPath))
        {
            using (Graphics graphics = Graphics.FromImage(originalImage))
            {
                // 设置水印位置
                float x = (originalImage.Width - watermark.Width) / 2;
                float y = (originalImage.Height - watermark.Height) / 2;
                // 设置水印透明度
                graphics.CompositingQuality = CompositingQuality.HighQuality;
                graphics.SmoothingMode = SmoothingMode.AntiAlias;
                graphics.DrawImage(watermark, x, y, watermark.Width, watermark.Height);
            }
            // 保存添加水印后的图片
            originalImage.Save(outputImagePath);
        }
    }
    return outputImagePath;
}

实现防盗链

配置Web.config

在ASP.NET项目中,你需要修改Web.config文件,添加以下配置来启用防盗链。

如何编写ASP.NET图片加水印及防盗链功能的完整实现代码?

<configuration>
  <system.web>
    <httpRuntime targetFramework="4.0" />
    <customErrors mode="On" defaultRedirect="error.html">
      <error statusCode="403" redirect="403.html" />
    </customErrors>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <security>
      <requestFiltering>
        <requestLimits maxUrlLength="8192" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

编写C#代码

你需要编写代码来检查请求的来源,并返回相应的响应。

public static void CheckReferer(HttpRequest request, HttpResponse response)
{
    string referer = request.UrlReferrer != null ? request.UrlReferrer.Host : "";
    string allowedDomains = "yourdomain.com, anotherdomain.com"; // 允许的域名列表
    if (!allowedDomains.Contains(referer))
    {
        response.StatusCode = 403;
        response.Write("Access denied.");
    }
}

FAQs

Q1:如何在图片上添加文字水印?
A1: 可以使用System.Drawing命名空间中的TextRenderer类来在图片上添加文字水印,首先创建一个Graphics对象,然后使用TextRenderer.DrawText方法在指定位置绘制文字。

Q2:如何修改防盗链配置以允许更多域名访问?
A2: 在Web.config文件中,找到<requestFiltering>标签,然后修改<requestLimits>标签中的maxUrlLength属性和<allowedDomains>属性,以允许更多的域名访问,可以增加新的域名到allowedDomains字符串中。

如何编写ASP.NET图片加水印及防盗链功能的完整实现代码?

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/174780.html

(0)
上一篇 2025年12月18日 18:57
下一篇 2025年12月18日 19:01

相关推荐

  • 阿里云轻量服务器无域名如何快速配置CDN服务?

    阿里云轻量服务器无域名CDN配置指南阿里云轻量服务器是一款高效、稳定、易用的云服务器产品,适用于个人和企业用户,对于无域名的轻量服务器,配置CDN可以提高网站访问速度,降低带宽成本,本文将详细介绍阿里云轻量服务器无域名CDN的配置方法,准备工作阿里云账号:确保您已注册阿里云账号并登录,轻量服务器:已购买并开通阿……

    2025年11月18日
    01020
  • 香港服务器与国内CDN兼容性如何?适用性及配置问题详解?

    香港服务器可以用国内CDN吗?随着互联网的快速发展,越来越多的企业和个人选择在香港服务器上托管网站,由于地理位置的原因,香港服务器在访问国内用户时可能会存在延迟和速度慢的问题,为了解决这个问题,许多用户考虑使用国内CDN,香港服务器可以用国内CDN吗?本文将为您解答这个问题,什么是CDN?分发网络)是一种将网站……

    2025年12月10日
    0830
  • 佳能623cdn打印机加粉步骤详解,是直接更换还是自己动手?

    佳能623cdn打印机如何加粉:准备工作在开始加粉之前,请确保您已经准备好以下物品:佳能623cdn打印机一台适合佳能623cdn打印机的原装墨粉盒墨粉(建议使用原装墨粉)小刷子或软毛笔纸巾或湿巾加粉步骤打开打印机打开佳能623cdn打印机,确保打印机处于正常工作状态,取出墨粉盒轻轻按下墨粉盒上的锁定按钮,然后……

    2025年12月7日
    01370
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • aspnet城市,揭秘ASP.NET在都市软件开发中的应用与挑战?

    随着互联网技术的飞速发展,ASP.NET作为一种强大的开发框架,已经在全球范围内得到了广泛应用,在我国,越来越多的城市开始采用ASP.NET技术来构建城市信息管理系统、电子政务平台等,本文将详细介绍ASP.NET在各个城市的应用情况,以及其带来的优势,ASP.NET在我国城市的应用现状1 电子政务领域电子政务是……

    2025年12月14日
    01350

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注