012. asp.net生成验证码图片(汉字示例/字母+数字)
protected void Page_Load(object sender, EventArgs e)
{
//生成验证码图片的基本步骤
string checkCode = "新年快乐";
//定义画布大小
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 20.5)), );
//指定绘制类型
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = ; i < ; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);
}
//指定字体/字号/样式
Font font = new System.Drawing.Font("Arial", , (System.Drawing.FontStyle.Bold));
//指定画笔, 线性渐变
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(, , image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, , );
//画图片的前景噪音点
for (int i = ; i < ; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), , , image.Width - , image.Height - );
System.IO.MemoryStream ms = new System.IO.MemoryStream();
//将绘制的图片以指定的格式保存到内存中
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
//清除缓存
Response.ClearContent();
//指定输出类型
Response.ContentType = "image/Gif";
//以二进制方式输出
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
} }
最终效果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAAAXCAIAAAD4GeQtAAAEtklEQVRYheVYyw3sNgycTvw7+sha1ALrcBtsgbXMVfUwB0m2tf7sviAIAoQwDNkrUSSHHMoLOpn5f7vP8wxmxp1wE2YBaPn293ehwgQm/idrNhWoJDteuQlEoZE6I623mZucH2W99+iY75znGeb2MklBbKctN+yLAQoMoPjnTnQKTHpzFfcGoblKN4VqFywqVBOZ34x8E1cFFHLG7xFzOoGQRAYBAtRUBlYcBiigPuJJK4C3S52WyljPd/WQpMe6rb48JJtCNdkXEIMGmNMSFFJcrQ4D5mSCbYcOcxvHEbwgFhGRQxG7EYYAaBHhxLPPACOCmwmoR4xrIL5WTcV8Y7gKVFHvClVIvSfVq8HZDKKQcOMPtcnMZVk6zHmqMW7UZBYRHgCl5LyHgC/Vq1kEJqcCkSTF87qN6/3KiN1hO/S3WERE0KCKW/xNIXo2PkHTY6LQuSzLW50XJwkBWNVkAtTtaQUVlMuWV8y5fcyhraSbliqASpmQadCmkAa599yL5ycIN/mIxWFMKDOnaQIziQ4HBYEAKAgk7o97wQsI0LwMTFpcbLXCDgrTtSt1ZraxCoyrdUa5Ccy8/CpctbrhJpCWAs+Yu+oxLSKCCda/6cLsHIbhoc4jzBERllqF1z1anWfqXgIfkkNP4fihzkmoJF5SPcJNvHIeHE+YF4TNO8wNeNqRuXj+0M+L2EpBHCpyq/NMuUvsorn3PLBJeWQ6Nd6mE24AkCTcBKrJdm6TE71ZaiRXHg+TrL2sF90asReGhwF14BERfOR2j5beAdTetmd4q3OeW72hj9efYA60xW5I1mPenH/mVMkabp8lXbPgZr45K8N9wTwRiGOGs57qarZfyCziirnBJMttvzncjqBrB2aEpb2ffW3poTBrOc+EAr5Br/tWhnvi9kJs0s4tpZMxdZ4jdQqtEp4JKP1h5nyZo1Gdnv0RN2l1rlkqpSXSVSCfNHzpjpXPAfWCOcxLCPAB/hvm5RinXjEvNG45mCgtBQTkS3PuImKCjszPUGPds13ljPmmAjXnayePfa1CbD8IF8xziQgMouczXO1qJT36g7Gl4IqIaIdzAahJAAICAFCAAkUThuBepKH9JtHOcJWEUpfk3PTtGOt67efWtUMYULlgRf1ieTq3Ww3BUeeWeOYtBXGp81vZMQegCdcJCIko3Vsth27BpAJljgYImap7dj7qB7kKV7Wep7kdmJfQGHDEsWH+WeeKsBy2tgNMKrpahVddpau9OpwUq7VsV8GNz525DXNLl8Ye0XK+FPOeC6InDmulXvpZx6lM2KPzE7dr7cOlpUVE+4zJxB2333oEmOSj+VvWiNBLHCrOQcH9h4eATKKJX3Z10b6wd8FqcXylXvq5bV94SyHvEw5b49eZ/6Z8wfw33v6Pip7KUC7/anzp5/+wPH8z/i7Wd6a/rYe+f6s56WYP/9fdvbfPN68Dy6RfltzfjZnWxnaosuPeG2Dntfuj26cZVW2dM88zxnGcpmlZlnmep2ma53kYhnme53kex3FZlmmapmkax3F/PwxDmV9+LQuLLMtyVljG+5xhGMq4aD5vumvete027Hr2aeVlmT+OY9G2L9zN27WVx7OdwzD8BSYcbuveQkhwAAAAAElFTkSuQmCC" alt="" />
public partial class _Default : System.Web.UI.Page
{
/// <summary>
/// 生成随机数字符串, 并保存到Cookie中
/// </summary>
/// <returns></returns>
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
Random random = new Random();
for (int i = ; i < ; i++)
{
number = random.Next();
if (number % == )
code = (char)('' + (char)(number % ));
else
code = (char)('A' + (char)(number % ));
checkCode += code.ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
return checkCode;
} protected void Page_Load(object sender, EventArgs e)
{
string checkCode = GenerateCheckCode();
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 13.3)), );
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = ; i < ; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", , (System.Drawing.FontStyle.Bold));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(, , image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, , );
//画图片的前景噪音点
for (int i = ; i < ; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), , , image.Width - , image.Height - );
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
} }
}
最终结果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAAXCAIAAAAgFUAnAAADRElEQVRIic1XyxHkKgzsTOzBRx8VCykoDtJQCsTSV+LRHvj4x8zO1L7DU7lcGAu53YJGgJks/D/fl2UBC/1H04TzI7KNNmNrI2p3ls/RsNuHt8x8vV6w/NbJ0uUVgHeew8T1rz6Hc/qErxoLt21rXEo5Dcbbwe+A0n9OyJdm2UIIYP7tA1Ogkj+llfkgmPHbDynE3VkYQrjPS4sEiNRdd3F3S7RIgUluQJkpsHalHqFQoXBoPlBZVIVKZHuEKIS7KWRcgmb334OxcF3Xx7zMDhC4prBQQAF1dwOZ7IB4BcqiChNYfUaCQBVqpYOGKlQh/d4uvskG84xLL94A5VNnJkCJpLs7FZTM9uuZAjOXEw4TqCZ2TKaJnSwRiELtFJxJuFOhLG4PwbGmRHnQ0BoW/Zx0d7d4wt1yTbY5WmEZ3QFxd8+mMIEKTKECEUCbMFXc45c60CgKmapNU6KJXjbmetJ7um+hqwF6Bg2ASQRaEy1X2vq8vHW6Z1GIxhnKYiGEmV4Wt6IYsC7pbiZFNFqHaAIB4D5CUSuR8UbBnEvPphDd7eZtCZd5qddwtlPgNcW2H+nGxcQaRArA/aTnyTqXxg4I2Q6UNy6LKmSq0iw145n6VMBMgIgOqEcH7KEUVDQxGtGrgyYq6krXB50943cudcql4N0ab98zgExqkQKRhxRbtDEd66MXc3dALKokk0jPxmzXWTjnknvtpLszXzhjscblE6X3dY2nKrkztWU+WU+5om/ImHrebyjPA3OTT85W5ycuJUqXdw7CmhXqEPMiQ9itVBBGV8GQ6CbjXfZbxs96jp2DyAu+Xf3YIfsal1sFVVxBuQqnu2tbLuPeLhYfexJP231Nes/7GeXAOmdxcNnqS03zpLs7D1Zcy9GW/m8fqocD6KyCfIjUGwDFLnvPf2XINkqkb0rSz8Z8qi+b7fOg810hE5iUCHYtzv8R6FG58Ub+/kO9PTXEBlSiuDsAyR8HvLe+xvs5yO536+cju56Y7ItT1cmnBpzEud67w/CsGKyeKJZlCSGEEJZl2bYthLBt2+v1CiG8um3btq5rbYQQanv4LMtS2+u6bttWfWrPiDyi1Z51XUec4VY7q/+6rjVaHfgHxETn++8g9BUAAAAASUVORK5CYII=" alt="" />
012. asp.net生成验证码图片(汉字示例/字母+数字)的更多相关文章
- java web学习总结(九) -------------------通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- JavaWeb---总结(九)通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl. ...
- javaweb学习总结(九)—— 通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- java web 学习九(通过servlet生成验证码图片)
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- 通过Servlet生成验证码图片
原文出自:http://www.cnblogs.com/xdp-gacl/p/3798190.html 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类, ...
- javaWeb学习总结(3)- 通过Servlet生成验证码图片(2)
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- 通过Servlet生成验证码图片(转)
原文地址:http://www.cnblogs.com/xdp-gacl/p/3798190.html 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类, ...
- javaweb(九)—— 通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- 转: 通过Servlet生成验证码图片
孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)—— 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...
随机推荐
- chrom,firefox,ie不能上网,百度浏览器却可以。。。
chrome和ie提示DNS查找失败,但是百度浏览器没任何问题,这是什么情况... 尝试很多方法后无用,命令行执行很多命令,无用, 试一下阿里的 DNS: 首选:223.5.5.5备用:223.6.6 ...
- Android 编译Settings、Mms等模块,并Push到手机中安装失败
问题描述:在编译完Settings等相关模块后,并push到手机中安装失败(在手机中无法找到该应用),但是使用adb shell命令进入到手机中在System/app或者System/priv-app ...
- OC多线程管理
在OC中多线程管理包含GCD.NSThread.NSOperationQueue. 下面简单介绍. 进程和线程 进程:正在进行中的程序叫做进程,负责程序运行的内存分配. 每一个进程都有自己独立的虚拟内 ...
- windows系统mysql定时自动备份
MySQL Administrator 工具是MySQL官方的数据库管理工具,包含在MySQL GUI Tools中,可在MySQL官方网站下载到,下载地址:http://dev.mysql.com/ ...
- 使用Mysqldump 备份数据库
使用Mysqldump 备份数据库 1.备份一个数据库 mysqldump --user [user name] --password=[password] [database name] > ...
- 【Avalon】获取隐藏元素的尺寸
保存原来的属性 设置成显示的属性 获取尺寸 设置回原来的属性 var cssShow = { position: "absolute", visibility: "hid ...
- ssh 无密码登录
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想 ...
- WeCenter程序安装
WeCenter程序安装时需要GD库和freetype的支持,以下是安装方法 GD库的安装:我们可以直接使用yum命令来安装,自动解决依赖关系及安装GD库相关的包. [root@localhost ~ ...
- Java-->实现群聊功能(C/S模式--TCP协议)
--> Java 对TCP协议的支持: --> java.net包中定义了两个类ServerSocket 和Socket ,分别用来实现双向连接的server 端和client 端. -- ...
- Educational Codeforces Round 15 A dp
A. Maximum Increase time limit per test 1 second memory limit per test 256 megabytes input standard ...