ASP.NET 图片加水印防盗链实现代码
ASP.NET图片加水印防盗链的实用指南:一步步实现代码,值得你参考
亲爱的开发者朋友们,你是否曾面临这样的问题:你的网站上的图片被其他网站直接盗用或链接失效。今天,我将为你提供一种解决方案:通过ASP.NET为图片添加水印以实现防盗链功能。这不仅能帮助保护你的图片版权,还能防止图片链接的滥用。下面,让我们一起深入如何实现这一功能。
一、准备工作
你需要确保你的ASP.NET环境已经搭建好,并且熟悉基本的C编程知识。为了加水印,你可能需要一个图片处理库,如System.Drawing。
二、核心代码实现
1. 获取原始图片:使用ASP.NET的IO功能获取上传或存储的图片文件。
```csharp
string imagePath = "path/to/your/image.jpg"; //替换为你的图片路径
Image originalImage = Image.FromFile(imagePath);
```
2. 创建水印内容:你可以使用文字、图片或者二者结合作为水印。这里以文字水印为例。
```csharp
string watermarkText = "YourWatermarkText"; //替换为你的水印文字
Font watermarkFont = new Font("Arial", 20); //设置字体样式和大小
```
3. 为图片添加水印:在图片的指定位置添加水印文字或图片。这里假设我们将水印添加到图片的右下角。
```csharp
Graphics graphics = Graphics.FromImage(originalImage);
Brush brush = new SolidBrush(Color.FromArgb(128, 255, 255, 255)); //设置透明度等属性
graphics.DrawString(watermarkText, watermarkFont, brush, new PointF(originalImage.Width - watermarkTextWidth - margin, originalImage.Height - watermarkTextHeight - margin)); //根据文字和水印位置调整坐标点参数
```
```csharp
// 创建一个名为Class1的类,它实现了IHttpHandler接口
public class Class1 : IHttpHandler {
// 构造函数
public Class1() {
// TODO: 在此处添加构造函数逻辑
}
// 判断实例是否可重用
public bool IsReusable {
get { return true; }
}
// 处理请求的方法
public void ProcessRequest(HttpContext context) {
var req = context.Request;
// 判断请求是否来自已授权的源,并进行反盗链判断
if (req.UrlReferrer != null && req.UrlReferrer.Host.Length > 0) {
using (var img = System.Drawing.Image.FromFile(req.PhysicalPath)) {
using (var g = Graphics.FromImage(img)) {
// 在图片上绘制文字水印,设置字体、颜色等属性
g.DrawString("三国演义", new Font("宋体", 20, FontStyle.Bold), Brushes.White, 10, 10);
img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
context.Response.End();
}
} else {
context.Response.Write("您不能盗链本站图片");
}
}
}
```
```csharp
// 添加一个通用处理文件Watermark的类
public class Watermark : IHttpHandler {
public bool IsReusable { get { return false; } } // 由于处理过程中涉及文件操作,设置为不可重用
private readonly string _configPath = "~/Config/WaterMarkConfig.xml"; // 水印配置文件的路径
private WatermarkConfig _config; // 水印配置信息对象
private static Dictionary
seo排名培训
- ASP.NET 图片加水印防盗链实现代码
- 理解javascript中DOM事件
- windows7下mysql8.0.18部署安装教程图解
- jQuery实现一个简单的轮播图
- Angular的事件和表单详解
- AngularJS中的按需加载ocLazyLoad示例
- 使用EVAL处理jqchart jquery 折线图返回数据无效的解
- jquery的checkbox,radio,select等方法小结
- 详解vue中v-bind-style效果的自定义指令
- 用Vue.extend构建消息提示组件的方法实例
- 微信小程序实现消息框弹出动画
- php 实现进制相互转换
- CI框架封装的常用图像处理方法(缩略图,水印,旋转
- ThinkPHP框架分布式数据库连接方法详解
- 基于JS实现仿百度百家主页的轮播图效果
- 详解如何在ASP.NET Core Web API中以三种方式返回数据