65.9K
CodeProject 正在变化。 阅读更多。
Home

SixPack 库 -- CaptchaImage。

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.29/5 (3投票s)

2009年3月20日

公共领域

1分钟阅读

viewsIcon

23319

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 下)

foobar.png

历史

  • 2009 年 3 月 20 日:初始发布
© . All rights reserved.