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生成验证码图片(汉字示例/字母+数字)的更多相关文章

  1. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  2. JavaWeb---总结(九)通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片  1 package gacl. ...

  3. javaweb学习总结(九)—— 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  4. java web 学习九(通过servlet生成验证码图片)

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  5. 通过Servlet生成验证码图片

    原文出自:http://www.cnblogs.com/xdp-gacl/p/3798190.html 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类, ...

  6. javaWeb学习总结(3)- 通过Servlet生成验证码图片(2)

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  7. 通过Servlet生成验证码图片(转)

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3798190.html 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类, ...

  8. javaweb(九)—— 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  9. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)—— 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

随机推荐

  1. 一个经典例子让你彻彻底底理解java回调机制

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢 所谓回调: ...

  2. 在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结

    在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结 一.资料来源:    网上一共找到两个方法,一个是视频上的教程,一个是网页资料. 二.视频资料方法内容:1.install qe ...

  3. IOS 封装类的时候注释格式,使用的时候可以想官方库一样快捷显示

    /** @brief 详情 @param 参数 @note 注意 @return 返回值类型 @code 这里写例题代码 @endcode @see 相似的方法参考 */

  4. Java_oop_继承

    不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰.想想还有点小激动呢, OK,睡醒了,我们说到继承就先来学习一下Java中继承的语法. public SubClass exte ...

  5. DirectX游戏编程入门

    刚开始学习D3D,安装完DirectX9后,在VS2008中新建Win32项目· ----------------------------------------------------------- ...

  6. iOS-MVC详解

    MVC与模板概念的理解 MVC(Model View Controller)模型-视图-控制器 MVC本来是存在于Deskt op程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC 的 ...

  7. Push推送原理

    Push 的工作机制 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器. 推送可以分为三个阶段. 第一阶段:.net应用程 ...

  8. Ubuntu 14.04 AM335x TI-RTOS 编译

    /************************************************************************************* * Ubuntu 14.0 ...

  9. 传智springMVC笔记

    springmvc 第一天 springmvc的基础知识 课程安排: 第一天:springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器.处理器映射器.处 ...

  10. Tomcat中负载的Session解决办法

    Tomcat进行请求的Session解决方式总体来说有三种, (1)使用Nginx或者Apache反向代理工具进行用户请求的分机器,在Tomcat的Engine中的标签中加入jvmRoute属性,指定 ...