如何编写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的工作原理、优势以及在实际应用中的效果,百度云加速1 什么是百度云加速百度云加速是百度公司提供……

    2025年12月6日
    0110
  • 一天跑cdn服务器究竟耗电多少?环保成本与效益如何平衡?

    随着互联网的快速发展,CDN(内容分发网络)服务器在保障网络内容快速、稳定传输方面发挥着至关重要的作用,作为一项高科技服务,CDN服务器的能耗问题也日益受到关注,本文将详细介绍跑CDN服务器一天耗电量的相关情况,CDN服务器能耗概述CDN服务器能耗构成CDN服务器的能耗主要由以下几部分构成:硬件能耗:包括服务器……

    2025年11月10日
    0170
  • Q641H一16CDN50气动球阀为何在工业应用中备受青睐?揭秘其独特优势与性能!

    Q641H一16CDN50气动球阀是一种高性能、高可靠性的阀门产品,广泛应用于石油、化工、医药、食品、水处理等行业,该阀门采用国际先进技术,具有结构紧凑、密封性能好、操作方便、使用寿命长等特点,产品特点结构紧凑Q641H一16CDN50气动球阀采用整体式结构设计,使得阀门体积小,安装方便,节省空间,密封性能好阀……

    2025年11月19日
    080
  • 腾讯云CDN缓存服务器有何独特优势,相比同类产品有何显著领先之处?

    腾讯云CDN缓存服务器优势分析随着互联网的快速发展,内容分发网络(CDN)已成为提高网站访问速度、优化用户体验的关键技术,腾讯云CDN缓存服务器凭借其强大的功能和卓越的性能,在市场上占据了重要地位,以下是腾讯云CDN缓存服务器的主要优势分析,高速缓存,加速访问1 分布式节点腾讯云CDN拥有全球部署的节点,覆盖国……

    2025年12月10日
    070

发表回复

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