asp.net - 生成img标记src的位图

时间:2011-07-15 04:57:17

标签: asp.net captcha

我正在推出自己的验证码,因为对于客户的访问者来说,重新开始会变得有点复杂。 我有以下代码:

private Bitmap generateCaptchaNumbers()
    {
        Random num1 = new Random();
        Random num2 = new Random();

        int numQ1;
        int numQ2;
        string QString;

        numQ1 = num1.Next(10, 15);
        numQ2 = num2.Next(10, 15);

        QString = numQ1.ToString() + " + " + numQ2.ToString() + " = ";
        _answer = numQ1 + numQ2;
        Bitmap bmp = new Bitmap(85, 35);
        Graphics gfx = Graphics.FromImage(bmp);
        Font font = new Font("Arial", 18, FontStyle.Bold, GraphicsUnit.Pixel);
        Rectangle rect = new Rectangle(0, 0, 100, 50);

        gfx.FillRectangle(Brushes.White, rect);
        gfx.DrawString(QString, font, Brushes.Blue, 0, 0);

        return bmp;
    }

我如何在注册用户控件中显示生成的bmp?

如果可能的话,我宁愿不需要将生成的bmp保存到磁盘。

2 个答案:

答案 0 :(得分:2)

您必须创建一个实现IHttpHandler的HttpHandler并在ProcessRequest中返回二进制文件:

context.Response.Clear();
context.Response.ContentType = "image/jpeg";
MemoryStream stream = new MemoryStream();
Bitmap bitmap = generateCaptchaNumbers();
bitmap.Save(stream, ImageFormat.Jpeg);
context.Response.BinaryWrite(stream.GetBuffer());

更新:点击此链接创建和部署自定义HttpHandler:http://support.microsoft.com/kb/308001

答案 1 :(得分:0)

您需要将位图转换为gif,jpg或png,然后将该图像返回到http响应。同时将响应的内容类型设置为image / gif(或jpg,png)以匹配类型