我正在推出自己的验证码,因为对于客户的访问者来说,重新开始会变得有点复杂。 我有以下代码:
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保存到磁盘。
答案 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)以匹配类型