EF的水印和验证码图制做

  • 水印制作
    • 创建IHttpHandler接口
    • 编写水印代码
    • 配置配置文件
    • 创建两个web窗体
    • 最终实现页面
  • 验证码图制作
    • 编写验证码代码
    • 验证码最终效果图

水印制作

创建IHttpHandler接口

public class HttpHandler : IHttpHandler{public bool IsReusable => throw new NotImplementedException();public void ProcessRequest(HttpContext context){throw new NotImplementedException();}}

编写水印代码

详细请看注释

public class HttpHandler : IHttpHandler{public bool IsReusable => false;public void ProcessRequest(HttpContext context){//创建一个画板,把获取到的图片放到画板上Bitmap bitmap = new Bitmap(context.Request.PhysicalPath);//创建画笔,准备在画板是绘画Graphics graphics = Graphics.FromImage(bitmap);//获取水印图片Image image = Image.FromFile(context.Server.MapPath("shui.png"));//水印图片放置的位置,用画板的宽高减去水印图片的宽高看水印图片位置是否合适不合适自己调节graphics.DrawImage(image, new Point(bitmap.Width-image.Width+10, bitmap.Height - image.Height+10));//清除画笔graphics.Flush();//将图片存为输出流bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//把图片输出至浏览器context.Response.WriteFile(context.Request.PhysicalPath);}}

配置配置文件

在configuration节点下编写

<system.webServer><handlers><add verb="*" path="images/*" type="水印.HttpHandler" name="sy"/></handlers></system.webServer>

创建两个web窗体

放入两个图片标签,写入路径(使用服务器控件也行)

<form id="form1" runat="server"><div><img src="data:images/cdf.jpg" /><img src="data:images/cdf.jpg" /></div></form>

最终实现页面

验证码图制作

创建IHttpHandler接口(同水印接口一样)

编写验证码代码

详细请看注释

public class Class1 : IHttpHandler,IRequiresSessionState{public bool IsReusable => false;public void ProcessRequest(HttpContext context){//创建一个宽300,高100的的画板Bitmap bitmap = new Bitmap(300,100);//创建画笔准备在画板上写验证码Graphics graphics = Graphics.FromImage(bitmap);//随机生成数Random random = new Random();//在这些里面随机生成一个五位数的验证码string sj ="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";//给每一个验证码随机生成字体string[] zt = new string[] { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };//创建一个字符类型接收每一个验证码char sui ;//创建一个string类型把所有验证码整合string suij="";//创建一个string类型接收一个随机生成的字体string font = "";//创建一个Brush数组随机生成颜色Brush[] ys = new Brush[]{ Brushes.Blue, Brushes.Yellow, Brushes.Pink, Brushes.Red, Brushes.Green, Brushes.Orange, Brushes.Purple };//清除背景颜色,新建一个背景色graphics.Clear(Color.DarkGray);for (int i = 0; i < 5; i++){//随机生成一个数,给到y轴位置int FWY = random.Next(1, 50);//随机生成一个数,给到x轴位置,由于有顺序创建五个随机数不打乱顺序int fwX1 = random.Next(1, 50);int fwX2 = random.Next(55, 100);int fwX3 = random.Next(105, 150);int fwX4 = random.Next(155, 200);int fwX5 = random.Next(205, 255);//接收字体生成的随机数font = zt[random.Next(i, zt.Length)];//接收随机生成数sui = sj[random.Next(i, sj.Length)];//把随机生成数整合suij += sui;//判断循环数让每一个验证码都有随机生成的样式if (i == 0){//画笔开始画验证码graphics.DrawString(sui.ToString(), new Font(font, 30, FontStyle.Bold), ys[random.Next(0, ys.Length)], new Point(fwX1, FWY));}else if (i == 1){graphics.DrawString(sui.ToString(), new Font(font, 30, FontStyle.Bold), ys[random.Next(0, ys.Length)], new Point(fwX2, FWY));}else if (i == 2){graphics.DrawString(sui.ToString(), new Font(font, 30, FontStyle.Bold), ys[random.Next(0, ys.Length)], new Point(fwX3, FWY));}else if (i == 3){graphics.DrawString(sui.ToString(), new Font(font, 30, FontStyle.Bold), ys[random.Next(0, ys.Length)], new Point(fwX4, FWY));}else if (i == 4){graphics.DrawString(sui.ToString(), new Font(font, 30), ys[random.Next(0, ys.Length)], new Point(fwX5, FWY));}//随机生成噪点for (int j = 0; j < 50; j++){int x = random.Next(bitmap.Width);int y = random.Next(bitmap.Height);graphics.DrawRectangle(new Pen(ys[random.Next(0, ys.Length)], 0), x, y, 1, 1);                }}//把整合验证码放入session,为了方便验证(验证还未写)context.Session["sjs"] = suij;//清除画笔graphics.Flush();//把图片存为输出流,返回至客户端bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);}

验证码最终效果图

EF的水印和验证码图制做相关推荐

  1. php全屏水印代码,zblogPHP全屏水印插件防盗图神器上线

    zblogPHP全屏水印,防盗图神器,小插件,大作用! zblogPHP全屏水印插件购买: zblog应用中心价格¥39.8,联系本站管理购买立减5元---> 插件特色/介绍: 1,为图片加上全 ...

  2. 如何在图片上加水印防止盗图?

    如何在图片上加水印防止盗图?大家都知道,互联网是一个开放的平台,在互联网上可以获取任何你想要的文件或者资料,不仅简单而且成本非常低,所以有很多人会在网上盗用别人的图片,然后为自己所用,这严重侵害了图片 ...

  3. php imagefill,PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】

    本文实例总结了PHP图像处理技术.分享给大家供大家参考,具体如下: 1.绘图 场景: 验证码.图像水印.图像压缩处理 php绘图坐标体系是从0,0点越向右值越大,越向下值越大 需要开启php的gd2扩 ...

  4. php数字相册心总结150字,PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】...

    本文实例总结了PHP图像处理技术.分享给大家供大家参考,具体如下: 1.绘图 场景: 验证码.图像水印.图像压缩处理 php绘图坐标体系是从0,0点越向右值越大,越向下值越大 需要开启php的gd2扩 ...

  5. 如何分类保存下载京东商城无官方水印商品主图

    提起来下载图片很多人都会想到使用鼠标右击另存为,采用这种方法工作量巨大,而且会出现图片保存错误的情况,想要提高工作效率可选择固乔电商图片助手的来帮忙.有了这款工具遇到店铺装修的情况,可将店铺内宝贝分类 ...

  6. 美图秀秀去除水印前后对比图

    **使用工具:**在线版美图秀秀 美图秀秀连接地址:https://xiuxiu.web.meitu.com/main.html **结论:**在背景复杂的情况下,如2.4点位,效果很理想:对于背景复 ...

  7. js逆向第5例:猿人学第8题-验证码图文点选

    文章目录 一.解决点选坐标问题 二.图像去噪点处理 选出rgp颜色最多2个,进行降噪处理 移除干扰线条 灰度转换 增强字体显示效果 图片切割成单个字体便于识别 三.图像识别/机器学习 四.header ...

  8. 无水印思维导图——导出亿图(试用版)无水印图片

    1.选择要导出的框图 按住CTRL可多选(我一般就全选了 2.复制 CTRL+C 3.粘贴到QQ聊天框里 √ 完成!

  9. vue 显示验证码 图片流

    接口添加 responseType:'blob' 获取 let result = await this.$service.getCaptcha({}) const myBlob = new windo ...

最新文章

  1. 函数组:SDIFRUNTIME
  2. 用vs2005开发比delphi快多了
  3. [Spring cloud 一步步实现广告系统] 8. 检索系统配置依赖
  4. C++找出数组中的第一个非重复整数的算法(附完整源码)
  5. 万圣节后的早晨九数码游戏——双向广搜
  6. 信息安全等级保护工作概述
  7. CountDownLatch类使用api
  8. 转贴一组 Delphi 官方网站介绍 IDE 功能的动画
  9. 「excel小技巧」一秒快速求和多行数值
  10. cad怎么改光标样式_如何更改CAD光标大小及颜色?
  11. 论文笔记--Inductive Graph Neural Networks for Spatiotemporal Kriging
  12. 基于springboot的智能美食点餐配送系统
  13. hdu1576 A/B
  14. 联想笔记本怎么进入pe系统_联想进入u盘pe系统安装 u盘pe安装win7系统
  15. ChinaSkills技能大赛网络系统管理Debian模块||AppSrv的CA(证书颁发机构)配置详解
  16. 使用Scratch进行少儿编程
  17. 使用Java Swing实现7个经典应用诠释算法精髓
  18. 针对NFT的网络钓鱼
  19. Texpad 1.8.15 (529) for Mac 中文版 专业的LaTeX的编辑器
  20. CV圈杀疯了!继谷歌之后,清华、牛津等学者又发表三篇MLP相关论文,LeCun也在发声...

热门文章

  1. php设置和获取Cookie
  2. iMac快捷键组合功能列表
  3. iOS 申请Apple Developer公司开发者账号
  4. 往事如烟 - 老钟6
  5. github如何修改repository(仓库)名字
  6. 测试用例怎么写?这里提供一个测试用例小模板
  7. 关于PADS Layout无法覆铜的解决方法
  8. 移动互联网时代:活着还是死去,这是一个问题
  9. LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决)
  10. 分段控制器view隐藏