Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证码图像-ASP.NET_C#_Asp.net_Captcha - Fatal编程技术网

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

    }
   
}