SixPack 库 -- CaptchaImage。
SixPack 库教程,介绍如何使用 CaptchaImage 类。
引言
本文是关于如何使用 SixPack
库的一系列教程的一部分。 在此示例中,我们将展示如何使用 CaptchaImage
类为您的网站生成有效的 CAPTCHA。
背景
关于 SixPack 库
SixPack
快速开发库是在 .NET/Mono 平台上进行快速开发的一系列类。 它以有限通用公共许可证 2.1 (LGPL) 发布,并通过 Google 代码 提供。
Using the Code
这是在 SixPack
库中使用 CaptchaImage
类的一个示例。
通常,您会生成一个随机的字符序列,将其存储在会话中,然后使用此类从处理程序提供图像。
提交时,您将比较用户输入的值与会话中的值。
显而易见:不要使用参数将正确的 CAPTCHA 值传递给处理程序……这将使 CAPTCHA 变得无用!
一个不太明显的说明:mono 不支持我们在 System.Drawing
中使用的 WarpPath
方法,该方法用于混淆文本。 该类通过在 Unix 环境下以其他方式扭曲图像来解决此问题。 不幸的是,这不如 Win32
方法有效。
在库的未来版本中,我们可能会创建另一个基于 ImageMagick 的 CaptchaImage
类,以便我们可以在两个平台上提供一致的用户体验。
using System;
using SixPack.Drawing;
using System.Drawing;
using System.Drawing.Imaging;
namespace sixpackexamples
{
class MainClass
{
public static void Main(string[] args)
{
CaptchaImage captcha = new CaptchaImage
("foo-bar", 300, 100, "Times New Roman");
captcha.BackgroundDark = TangoPalette.SkyBlue1;
captcha.BackgroundLight = TangoPalette.SkyBlue3;
captcha.ForegroundDark = TangoPalette.SkyBlue2;
captcha.ForegroundLight = TangoPalette.SkyBlue1;
captcha.FontStyle = FontStyle.Italic;
Image image = captcha.Generate();
Bitmap bitmap = new Bitmap(image);
bitmap.Save("foobar.png", ImageFormat.Png);
}
}
}
此操作的结果如下(在 mono 下)

历史
- 2009 年 3 月 20 日:初始发布