2021-07-05

1.创建两个ASP.NET项目

2.一个为主,一个为辅

3.命名随便

4.在主里边添加新建项!Handler1.ashx 

5.在主里边添加一个文件夹,文件夹里放图片,以image命名 

6.在Handler1.ashx里边写入代码:

 public class Handler1 : IHttpHandler
    {
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
     
    }

7.获取上次请求的URL,代码如下:

  Uri lastUrl = context.Request.UrlReferrer;

8.获取本次请求的URL

 Uri currentUrl = context.Request.Url;

9.获取“请勿盗链”警告提示图片路径

 string errorImagePath = context.Request.PhysicalApplicationPath + "image/1.jpg";

10.发送至客户端代码如下:

 context.Response.WriteFile(errorImagePath);

11.判断是否为盗链

 if (lastUrl.Host != currentUrl.Host || lastUrl.Port != currentUrl.Port)
            {
                string errorImagePath = context.Request.PhysicalApplicationPath + "image/1.jpg";
                context.Response.WriteFile(errorImagePath);
            }
            else
            {
                context.Response.WriteFile(context.Request.PhysicalPath);
            }

12.完整的handler代码如下:

 public bool IsReusable
        {
            get
            {
                return true;
            }
        }
      
        public void ProcessRequest(HttpContext context)
        {
            Uri lastUrl = context.Request.UrlReferrer;
            Uri currentUrl = context.Request.Url;
            if (lastUrl.Host != currentUrl.Host || lastUrl.Port != currentUrl.Port)
            {
                string errorImagePath = context.Request.PhysicalApplicationPath + "image/1.jpg";
                context.Response.WriteFile(errorImagePath);
            }
            else
            {
                context.Response.WriteFile(context.Request.PhysicalPath);
            }
        }

13.在主项目web.config文件里边加入一下代码:

<system.webServer>
		<handlers>
			<add verb="*" path="image/*.jpg" type="T5防盗链.Handler1" name="plink"/>
		</handlers>
</system.webServer>

14.13中type类型指的是命名.里边的名字

15.在主项目中添加一个web窗体,default,插入图片代码:

   <div>
            <img src="image/1.jpg" />

            <img src="image/2.jpg" />


        </div>

16.在辅项目中添加一个web窗体,代码如下:

 <p>以下图片来自第一个站点</p>
            <img src="https://localhost:44334/image/1.jpg" />
            <img src="https://localhost:44334/image/2.jpg" />

17.辅项目中的路径是绝对位置

18.将两个项目同时启动,点击解决方案管理,右键属性,将单个启动设置为多个,然后启动我们要启动的项目: 

19.防盗前

20.防盗后 

21.给图片加水印

22.创建一个网站,准备其图片资源。

23.在图站中添加HtpHendere类,健承Htnatrr报口.

24.编写加水印的功能,代码如下:saplil class TestHandler : HttpHandler

25.水印图片

prvate const string WATERMARK _URL= -/mages/watermark png':

26.图片不存在,默认显示的图片

private const string DEFAULTIMAGE_URL= -/mags/detat ipg:public void ProcessRequestHttp(Context context)

27.得到用户请求的图片

System Drawing .Image Cover

28.”判断请求的物理路径中是否存在文件

if (File Exists(filePath))

29.加载文件

Cover = Image.romFile(filePath);

30.加载水印图片

lmae watemark = lmage Fomilelcontext Server MapPathWATERMARK URLI

31.实例化画布

Graphics 9二Graphics Fromlmage(Coven);

32.在image上绘制水印

g. Drawlmagelwatermark, new Rectangle(Cover Widthwatermark. Width,Cover.Height - wate

σV erHeight一watermark Height, Watermark Width, watermark Height1. 0,1 swatermark. Width, watermark. Height. GraphicsUnit Pixel);

g. Disposel();

33.释放水印图片

watermark. Dispose();

34.加载默认图片

Cover = Image FromFile(context Request MapPath(DEFAULTIMAGE URL)

35.设置输出格式

context. Response ContentType = "image/jpeg';

36.将图片存入输出流

Cover Save(context Response OutputStream. System Drawing Imaging ImageFormat Jpegl;Cover. Dispose():

context. Response End);

37.其他的都不需要改变了,咱们的水印就写完了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值