ASP.NET C# 验证码 支持中文 噪点 弯曲

2024-01-28 17:18

本文主要是介绍ASP.NET C# 验证码 支持中文 噪点 弯曲,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 /// <summary>
        /// 根据指定参数返回BitMap对象
        /// 引用如下:
        /// using System.Drawing;
        /// 调用例子如下:
        ///     eg1、保存为图象文件为
        ///     Bitmap srBmp = srBitmap(srs);
        ///     srBmp.Save(Directory.GetCurrentDirectory() + "//srs.gif", System.Drawing.Imaging.ImageFormat.Gif);
        ///     srBmp.Dispose();
        ///     eg2。网页中调用方式如下
        ///     Bitmap srBmp = srBitmap(srs);
        ///     System.IO.MemoryStream srMS = new System.IO.MemoryStream();
        ///     srBmp.Save(srMS,System.Drawing.Imaging.ImageFormat.Gif);
        ///     Response.ClearContent();
        ///     Response.ContentType = "image/gif";
        ///     Response.BinaryWrite(srMS.ToArray());
        ///     srBmp.Dispose();
        /// </summary>
        /// <param name="srs"></param>
        /// <returns></returns>

        public static Bitmap srBitmap(string srs)
        {
            //定义图片弯曲的角度
            int srseedangle = 45;
            //定义图象
            Bitmap srBmp = new Bitmap(srs.Length*20,30);
            //画图
            Graphics srGraph = Graphics.FromImage(srBmp);
            //清空图象
            srGraph.Clear(Color.AliceBlue);
            //给图象画边框
            srGraph.DrawRectangle(new Pen(Color.Black,0),0,0,srBmp.Width-1,srBmp.Height-1);
            //定义随即数
            Random srRandom = new Random();
            //定义画笔
            Pen srPen = new Pen(Color.LightGray,0);
            //画噪点
            for (int i = 0; i < 100; i++)
            {
                srGraph.DrawRectangle(srPen,srRandom.Next(1,srBmp.Width-2),srRandom.Next(1,srBmp.Height-2),1,1);
            }
            //将字符串转化为字符数组
            char[] srchars = srs.ToCharArray();
            //封状文本
            StringFormat srFormat = new StringFormat(StringFormatFlags.NoClip);
            //设置文本垂直居中
            srFormat.Alignment = StringAlignment.Center;
            //设置文本水平居中
            srFormat.LineAlignment = StringAlignment.Center;
            //定义字体颜色
            Color[] srColors ={ Color.Black,Color.Red,Color.DarkBlue,Color.Blue,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
            //定义字体
            string[] srFonts ={ "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
            //循环画出每个字符
            for (int i = 0, j = srchars.Length; i < j; i++)
            {
                //定义字体 参数分别为字体样式 字体大小 字体字形
                Font srFont = new Font(srFonts[srRandom.Next(5)], srRandom.Next(12,20), FontStyle.Regular);
                //填充图形
                Brush srBrush = new SolidBrush(srColors[srRandom.Next(7)]);
                //定义坐标
                Point srPoint = new Point(16, 16);
                //定义倾斜角度
                float srangle = srRandom.Next(-srseedangle, srseedangle);
                //倾斜
                srGraph.TranslateTransform(srPoint.X, srPoint.Y);
                srGraph.RotateTransform(srangle);
                //填充字符
                srGraph.DrawString(srchars[i].ToString(),srFont,srBrush,1,1,srFormat);
                //回归正常
                srGraph.RotateTransform(-srangle);
                srGraph.TranslateTransform(2,-srPoint.Y);
            }
            srGraph.Dispose();
            return srBmp;
        } 

这篇关于ASP.NET C# 验证码 支持中文 噪点 弯曲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654276

相关文章

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

C#使用MQTTnet实现服务端与客户端的通讯的示例

《C#使用MQTTnet实现服务端与客户端的通讯的示例》本文主要介绍了C#使用MQTTnet实现服务端与客户端的通讯的示例,包括协议特性、连接管理、QoS机制和安全策略,具有一定的参考价值,感兴趣的可... 目录一、MQTT 协议简介二、MQTT 协议核心特性三、MQTTNET 库的核心功能四、服务端(BR

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

C#特性(Attributes)和反射(Reflection)详解

《C#特性(Attributes)和反射(Reflection)详解》:本文主要介绍C#特性(Attributes)和反射(Reflection),具有很好的参考价值,希望对大家有所帮助,如有错误... 目录特性特性的定义概念目的反射定义概念目的反射的主要功能包括使用反射的基本步骤特性和反射的关系总结特性