C# 验证码生成照码编程之后
看了传智的视频,做到了验证码这一步,在视频中虽然没有验证码怎么做,但是有源码,照着源码打了一个,想着要做些总结。
验证码是涉及GDI+的操作,视频中谈及了GDI+三步:1、画布创建;2、给画布创建画笔;3、传入给要绘制的素材。
该验证可以调节字体大小、背景颜色、边框颜色,传入素材是用GUID函数生成(曾经见过有用数组然后剔除某些数据后随机选取,或许这个办法可以多避免一些1和l,0和o之类的显示尴尬吧,但是这有必要的吗?)。去网上看了几篇有关验证GDI+绘制的,突然感觉到验证码中也是大有学问啊,可以写个近2000多行的代码也是厉害了,验证码中大多数是用字符自动挑选然后生成的,感觉只是麻烦,不过对于用户可能体验会好点,直接用GUID程序员省事了(懒人啊,哈哈)。别人的验证码背景加上了背景噪点曲线和直线,背景噪点文字以及扭曲,调暗,模糊等,还包括了GDI+的图像处理方面的函数,包括雾化,扭曲,水波,锐化,高斯模糊,画直线,画曲线生成随机颜色,缩放图片,柔化图片,图片黑白化,增加曝光度,RGB滤镜,绘制圆角等功能。http://my.oschina.net/idufei/blog/95502(大神之作,感觉用来了解技术还是挺好的)SAD
对于自己学习的这个只是加上了少量的背景噪点(而且是单色噪点)和字符旋转而已。
背景噪点确定位置是在(x,y)=(random.next(0, 画布背景宽度),random.next(0, 画布背景高度)
,在文字方面进行了居中处理,多颜色随机选取(数组,这应该是常用的吧),字体的随机选择还有数字的旋转处理,然后对每一个字进行处理,对于旋转角度的,随机的选择,但是范围确实(-RandAngle,RandAngle)
之间了,对于代码中还是有不懂的代码
//移动光标到指定位置graphics.TranslateTransform(dot.X, dot.Y);graphics.RotateTransform(angle);graphics.DrawString(item.ToString(CultureInfo.InstalledUICulture), font, b, 1, 1, format);//转回去graphics.RotateTransform(-angle);graphics.TranslateTransform(2, -dot.Y); //移动光标到指定位置
总结:
1、创建画布(大小看字体大小和字数),获取该画布内存使用
2、背景处理,样式处理(加效果)
3、传入字符以及字符处理(拆散)和写入图片,加入了旋转、颜色、字体、居中处理
4、存储类型、写入数据流保存
(在此致谢传智播客发布的公开课)
生成GUID 全局唯一标识符:
格式范例
1、Guid.NewGuid().ToString(“N”) 结果为:
38bddf48f43c48588e0d78761eaa1ce6
2、Guid.NewGuid().ToString(“D”) 结果为:
57d99d89-caab-482a-a0e9-a0a803eed3ba
3、Guid.NewGuid().ToString(“B”) 结果为:
{09f140d5-af72-44ba-a763-c861304b46f8}
4、Guid.NewGuid().ToString(“P”) 结果为:
(778406c2-efff-4262-ab03-70a77d09c2b5)
(来自博客园 一天到晚游泳的鱼 http://www.cnblogs.com/pato/archive/2010/01/09/1643008.html) (未申请放置权限,不知道会不会侵权啊)
C# 验证码生成照码编程之后相关推荐
- java 验证码 源码_java 验证码生成源码
fontList = new ArrayList(); fontList.add(new Font("微软 雅黑", Font.LAYOUT_NO_START_CONTEXT, 3 ...
- php验证码雪花源码,php如何生成雪花背景验证码(附代码)
本文章来给大家介绍php生成雪花背景验证码程序代码 ,有需要的朋友可进入参考参考. 验证码生成程序<?php session_start(); session_register("lo ...
- 字节码编程 | 使用Javassist动态生成Hello World
大家好,我是冰河~~ 字节码编程在实际的业务开发(CRUD)中并不常用,但是随着网络编程,RPC.动态字节码增强技术和自动化测试以及零侵入APM监控的不断发展与大量使用,越来越多的技术需要使用到字节码 ...
- 若依前后端分离框架——生成数字验证码功能源码学习
使用版本:Ruo-Vue 3.8.0 项目地址:https://gitee.com/y_project/RuoYi-Vue 0.1:验证码生成流程图 0.2:验证码生成时序图 0.3:验证码的配置项 ...
- python生成激活码
github上的小练习啦,生成激活码,并且保存到mysql数据库中,代码: #coding=utf-8 import uuid import pymysql ''' uuid库生成128位全局唯一标识 ...
- C# C/S 图片验证码功能源码
为什么80%的码农都做不了架构师?>>> 运行效果如图 用法如下: /// <summary> /// 显示验证码 ...
- 解决PHP生成校验码时“图像因其本身有错无法显示”的错误
2019独角兽企业重金招聘Python工程师标准>>> 今天使用http://crazymud.iteye.com/blog/452293给出的代码进行PHP生成校验码功能的实现,发 ...
- eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等...
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...
- 结合shiro 的图形验证码生成
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 在做用户登录功能时,很多时候都需要验证码支持,验证码的目的是为了防止机器人模拟真实用户登录而恶意访问 ...
最新文章
- 人工智能不再是未来,机器学习靠什么来实现?
- git/ TortoiseGit如何使用证书登录
- 百分点大数据技术团队:乘风破浪 海外数据中台项目实践
- 实验四 恶意代码
- TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨0.56%
- [转]MSP430学习心得---时钟
- 关于清理「死代码」,我有一些好方法推荐给你
- web多线程之webworkers
- python数据可视化仪表盘,Python 数据可视化?
- python版代码整洁之道
- Arcgis(一) 制作全国行政区shp文件(精确到县级)
- 无法启动iis express web 服务器
- CSS Sprite(CSS雪碧图)
- 周立功linux内核,极速搭建周立功IMX287A ARM Linux开发环境
- 深度学习(一)最通俗易懂的 Transformer
- linux内核使用scons构建,使用scons软件构建工具
- Latex论文排版——图片
- 计算机中的三类总线是什么,计算机的三类总线分别是什么?
- jmeter文件上传
- ftp服务器维护,ftp服务器 - LNMP一键安装包