EF的水印和验证码图制做
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的水印和验证码图制做相关推荐
- php全屏水印代码,zblogPHP全屏水印插件防盗图神器上线
zblogPHP全屏水印,防盗图神器,小插件,大作用! zblogPHP全屏水印插件购买: zblog应用中心价格¥39.8,联系本站管理购买立减5元---> 插件特色/介绍: 1,为图片加上全 ...
- 如何在图片上加水印防止盗图?
如何在图片上加水印防止盗图?大家都知道,互联网是一个开放的平台,在互联网上可以获取任何你想要的文件或者资料,不仅简单而且成本非常低,所以有很多人会在网上盗用别人的图片,然后为自己所用,这严重侵害了图片 ...
- php imagefill,PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
本文实例总结了PHP图像处理技术.分享给大家供大家参考,具体如下: 1.绘图 场景: 验证码.图像水印.图像压缩处理 php绘图坐标体系是从0,0点越向右值越大,越向下值越大 需要开启php的gd2扩 ...
- php数字相册心总结150字,PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】...
本文实例总结了PHP图像处理技术.分享给大家供大家参考,具体如下: 1.绘图 场景: 验证码.图像水印.图像压缩处理 php绘图坐标体系是从0,0点越向右值越大,越向下值越大 需要开启php的gd2扩 ...
- 如何分类保存下载京东商城无官方水印商品主图
提起来下载图片很多人都会想到使用鼠标右击另存为,采用这种方法工作量巨大,而且会出现图片保存错误的情况,想要提高工作效率可选择固乔电商图片助手的来帮忙.有了这款工具遇到店铺装修的情况,可将店铺内宝贝分类 ...
- 美图秀秀去除水印前后对比图
**使用工具:**在线版美图秀秀 美图秀秀连接地址:https://xiuxiu.web.meitu.com/main.html **结论:**在背景复杂的情况下,如2.4点位,效果很理想:对于背景复 ...
- js逆向第5例:猿人学第8题-验证码图文点选
文章目录 一.解决点选坐标问题 二.图像去噪点处理 选出rgp颜色最多2个,进行降噪处理 移除干扰线条 灰度转换 增强字体显示效果 图片切割成单个字体便于识别 三.图像识别/机器学习 四.header ...
- 无水印思维导图——导出亿图(试用版)无水印图片
1.选择要导出的框图 按住CTRL可多选(我一般就全选了 2.复制 CTRL+C 3.粘贴到QQ聊天框里 √ 完成!
- vue 显示验证码 图片流
接口添加 responseType:'blob' 获取 let result = await this.$service.getCaptcha({}) const myBlob = new windo ...
最新文章
- 百度 和 AI教父Hinton 的故事
- linux rpm 安装 卸载软件
- Android中实现滑动翻页—使用ViewFlipper
- 《几何与代数导引》习题1.38
- Kettle使用_14 文件操作复制移动删除结合JS
- oracle pl/sql之oracle存储过程
- 遍历一个文件下的所有目录和文件
- 20万DBA最关注的11个问题
- git 代码回滚_git代码版本管理(1)——git版本回滚
- 怎样关闭计算机445端口,445端口怎么关闭 445端口关闭方法介绍
- 华为交换机:基于IP子网划分VLAN
- 检测卡常见错误代码:01、C1~C5、0D
- WEB自动化测试学习进度
- 甘肃省房屋过户费用计算机,2017二手房过户费计算器
- linux服务器默认多久断开ssh,SSH超时自动断开问题解决
- 微信支付的服务器配置url超时,微信H5支付商家存在未配置的参数,请联系商家解决的...
- oh-my-zsh详细安装与主题插件配置
- 开源免费OA教程:移动端工作表单操作条的使用方法
- 综合能源系统优化 数据来源《考虑需求响应的社区综合能源系统两阶段优化调度_刘蓉晖》
- GANSYNTH(基于对抗性神经网络的音频合成)
热门文章
- 2022年五一杯数学建模A题血管机器人的订购与生物学习解题全过程及论文和程序
- Linux输出重定向 >> 文件 2>1
- Ubuntu16.04 出现error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES
- 想做次世代三维建模师?先来提高自身美术基础
- RC4加密算法原理与C#实现
- 一建证书有什么用?拿到一级建造师证书能干什么?
- 机器视觉之多坐标系标定与统一
- mongoDB centos安装与客户端
- DRIVER_IRQL_NOT_LESS_OR_EQUAL 0X000000d1 srvnet.sys
- AI绘画(以后也叫AI视频)