如何编写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

相关推荐

  • 立思辰gb9541cdn转印带为何如此受欢迎?揭秘其独特优势与市场表现!

    立思辰GB9541CDN转印带自营:高品质印刷解决方案的引领者产品简介立思辰GB9541CDN转印带,作为一款高品质的印刷材料,广泛应用于各种印刷领域,如服装、纺织品、皮革、塑料等,该产品采用先进的技术和优质原材料,确保了其卓越的性能和稳定性,产品特点高清晰度:立思辰GB9541CDN转印带采用高分辨率图案,印……

    2025年11月13日
    03690
  • 公众号用什么服务器好?酷番云轻量应用服务器适合公众号部署吗

    公众号用什么服务器?核心结论:推荐采用云服务器(尤其是轻量级云服务器或容器化部署方案),兼顾成本、扩展性与稳定性;若面向高并发场景,应选择CDN加速+负载均衡+微服务架构的组合方案;中小规模公众号建议优先使用酷番云轻量应用服务器(Lighthouse),实现一键部署、自动扩容与毫秒级监控,兼顾性价比与运维效率……

    2026年4月15日
    02885
  • 公主岭云服务器购买,公主岭云服务器多少钱,公主岭云服务器推荐

    在公主岭云服务器购买决策中,核心结论是:企业应优先选择具备本地化节点覆盖、高可用架构及7×24 小时本地技术支持的云服务方案,以应对东北区域特有的网络延迟与数据合规需求,酷番云凭借其在吉林区域的深度布局,通过独享资源池与智能调度系统,为本地企业提供低延迟、高稳定的云基础设施,是解决公主岭地区企业上云痛点的首选路……

    2026年4月28日
    02171
    • 服务器间歇性无响应是什么原因?如何排查解决?

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

      2026年1月10日
      020
  • CDN流量消耗与服务器性能有何直接关联?影响有多大?

    CDN跑流量与服务器的关系探讨随着互联网的快速发展,CDN(内容分发网络)已经成为提高网站访问速度、优化用户体验的重要手段,在实际应用中,CDN跑流量与服务器之间的关系成为许多企业和开发者关注的焦点,本文将从CDN的工作原理、流量分配机制以及服务器性能等方面,探讨CDN跑流量与服务器之间的关系,CDN的工作原理……

    2025年11月9日
    04570

发表回复

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