生成验证码
来源:互联网 发布:python pyperclip 编辑:程序博客网 时间:2024/06/06 12:37
using System;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.IO;using System.Web.UI;namespace WebStringToPicture{ public partial class Index : Page { protected void Page_Load(object sender, EventArgs e) { string str = "aasdfghjlk"; CreateCheckCodeImage(str); } private void CreateCheckCodeImage(string checkCode) { if (checkCode == null || checkCode.Trim() == String.Empty) return; var image = new Bitmap((int) Math.Ceiling((checkCode.Length*12.5)), 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 var random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线只有一条 for (int i = 0; i < 2; 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(字体 大小 粗细 var font = new Font("Arial", 12, (FontStyle.Bold)); //LinearGradientBrush的参数是画的图像,起始颜色,简便的终止颜色,粗细,true var brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //文本 字体 颜色 起始位置x 起始位置y //画图片的前景噪音点 for (int i = 0; i < 100; 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), 0, 0, image.Width - 1, image.Height - 1); var ms = new MemoryStream(); image.Save(ms, ImageFormat.Gif); Response.ClearContent(); //清空缓冲区 Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } }}
0 0
- 验证码生成及验证
- 生成验证码并验证
- 验证码生成与验证
- C#生成验证码
- C#生成验证码
- 生成验证码
- 验证码生成
- 生成验证码
- JSP生成验证码
- 生成验证码
- 生成验证码
- 数字验证码生成
- 动态生成验证码
- 生成验证码(1)
- 生成验证码(2)
- c# 生成验证码
- 生成验证码图像
- 生成验证码
- CrossOver 13.2.27771 mac 下字体模糊的解决办法
- iOS phonegap 配置环境
- CSS3无前缀脚本prefixfree.js及Animatable介绍
- ubuntu下的unix2dos和dos2unix
- Python 性能分析入门指南
- 生成验证码
- 金山推WPS软件租赁模式:唯有改变才能生存
- Codeforces 472D. Design Tutorial: Inverse the Problem(一种逆向判定树成立的办法,从Kruskal到dfs)
- 仿微米网Android客户端全部UI
- hibernate笔记加强版
- 在微软STC实习快9个月了
- hdu 1024 dp
- hihoCoder1039 - 字符消除
- V$UNDOSTAT 和 V$ROLLSTAT