C# 验证码图像-ASP.NET
我正在我的网站上做我自己的验证码检查。 一切都正常,除了我需要一些模糊/效果在我的文本上,不能被网络绘图者看到等 用于在图像上生成文本的部分代码:C# 验证码图像-ASP.NET,c#,asp.net,captcha,C#,Asp.net,Captcha,我正在我的网站上做我自己的验证码检查。 一切都正常,除了我需要一些模糊/效果在我的文本上,不能被网络绘图者看到等 用于在图像上生成文本的部分代码: Bitmap BitMap = new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"); Graphics g = Graphics.FromImage(BitMap); g.DrawString(""+RandomNumberString+"", new Font("Ta
Bitmap BitMap = new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg");
Graphics g = Graphics.FromImage(BitMap);
g.DrawString(""+RandomNumberString+"", new Font("Tahoma", 40), Brushes.Khaki, new PointF(1, 1));
pictureBox1.Image = BitMap;
例如:
我该怎么做才能在我的文本上获得效果/模糊度
谢谢大家! 为什么要在免费的、可访问的(通过音频选项,使其可供有视觉问题的人使用)同时帮助数字化各种出版物的情况下推出自己的验证码?甚至还有一个 编辑: 看看这是多么有趣,看看“”可能会给你一些好主意。特别是,因为它包括图像失真代码示例 例如:
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int newX = (int)(x + (distortion * Math.Sin(Math.PI * y / 64.0)));
int newY = (int)(y + (distortion * Math.Cos(Math.PI * x / 64.0)));
if (newX < 0 || newX >= width) newX = 0;
if (newY < 0 || newY >= height) newY = 0;
b.SetPixel(x, y, copy.GetPixel(newX, newY));
}
}
for(int y=0;y=宽度)newX=0;
如果(newY<0 | | newY>=高度)newY=0;
b、 SetPixel(x,y,copy.GetPixel(newX,newY));
}
}
这将以波浪式的方式移动像素。比如你例子的第二个词 看看这个。在这里,您将看到一个关于如何使用C#和DrawString
方法创建验证码的代码示例
希望,这会有所帮助。我已经使用了大约5年,它不涉及与可怕的第三方API的任何集成
以防万一,您正在寻找一个完整的解决方案-谢谢!但我已经准备好了一个完整的解决方案。我非常想自己编写代码,因为那样我就要依赖reCAPTCHA的服务器一直处于运行状态。我想让它在我的服务器上成为本地的。但是它值得交换吗?例如,您的网站是否会像reCAPTCHA一样对视障人士开放?哪个还支持音频验证?例如,Facebook和Ticketmaster reCAPTCHA等网站就不应该倒下,它们的设置非常强大。音频验证部分目前并不重要,重要的部分是文本本身。“简单”的解决方案并不总是“有趣”的解决方案。这是一个非常好的教程。。谢谢大家!@坎瑞克:谢谢。您也可以在此处使用以下代码:
protected void Page_Load(object sender, EventArgs e)
{
if(! IsPostBack)
{
LoadCaptcha();[![enter image description here][1]][1]
}
}
public void LoadCaptcha()
{
try
{
Bitmap objBitmap = new Bitmap(130, 60);
Graphics objGraphics = Graphics.FromImage(objBitmap);
objGraphics.Clear(Color.White);
Random objRandom = new Random();
objGraphics.DrawLine(Pens.Black, objRandom.Next(0, 50), objRandom.Next(10, 30), objRandom.Next(0, 200), objRandom.Next(0, 50));
objGraphics.DrawRectangle(Pens.Blue, objRandom.Next(0, 20), objRandom.Next(0, 20), objRandom.Next(50, 80), objRandom.Next(0, 20));
objGraphics.DrawLine(Pens.Blue, objRandom.Next(0, 20), objRandom.Next(10, 50), objRandom.Next(100, 200), objRandom.Next(0, 80));
Brush objBrush =
default(Brush);
//create background style
HatchStyle[] aHatchStyles = new HatchStyle[]
{
HatchStyle.BackwardDiagonal, HatchStyle.Cross, HatchStyle.DashedDownwardDiagonal, HatchStyle.DashedHorizontal, HatchStyle.DashedUpwardDiagonal, HatchStyle.DashedVertical,
HatchStyle.DiagonalBrick, HatchStyle.DiagonalCross, HatchStyle.Divot, HatchStyle.DottedDiamond, HatchStyle.DottedGrid, HatchStyle.ForwardDiagonal, HatchStyle.Horizontal,
HatchStyle.HorizontalBrick, HatchStyle.LargeCheckerBoard, HatchStyle.LargeConfetti, HatchStyle.LargeGrid, HatchStyle.LightDownwardDiagonal, HatchStyle.LightHorizontal
};
////create rectangular area
RectangleF oRectangleF = new RectangleF(0, 0, 300, 300);
objBrush = new HatchBrush(aHatchStyles[objRandom.Next(aHatchStyles.Length - 3)], Color.FromArgb((objRandom.Next(100, 255)), (objRandom.Next(100, 255)), (objRandom.Next(100, 255))), Color.White);
objGraphics.FillRectangle(objBrush, oRectangleF);
//Generate the image for captcha
string captchaText = string.Format("{0:X}", objRandom.Next(1000000, 9999999));
//add the captcha value in session
Session["CaptchaVerify"] = captchaText;
Font objFont = new Font("Courier New", 15, FontStyle.Bold);
//Draw the image for captcha
objGraphics.DrawString(captchaText, objFont, Brushes.Black, 20, 20);
// objBitmap.Save(HttpContext.Current.Response.OutputStream, ImageFormat.Gif);
byte[] _bytes;
using (MemoryStream ms = new MemoryStream())
{
objBitmap.Save(ms, ImageFormat.Bmp);
_bytes = ms.ToArray();
}
imgcaptcha.ImageUrl = "data:image;base64," + Convert.ToBase64String(_bytes);
ImageCapchaSubmit.ImageUrl = "data:image;base64," + Convert.ToBase64String(_bytes);
}
catch (Exception)
{
}
}