2011-10-26 15 views
5

Estoy en el proceso de hacer mi propio control Captcha en mi sitio web. de trabajo de todo, excepto lo que necesito algunos blurryness/efectos en mi texto que no se pueda ver por un webcrawler etc.Captcha image - ASP.NET

Parte del código utilizado para generar el texto de la imagen:

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; 

Ejemplo:

enter image description here

¿Qué puedo hacer para obtener mis efectos/borrosidad en mi texto?

¡Gracias!

+1

Sólo en caso de que usted está buscando una solución completa - http://code.google.com/apis/recaptcha/docs/aspnet.html – jrummell

+1

Gracias! Pero ya tengo una solución completa lista para usar. Me gustaría mucho codificar el mío. – Birdman

Respuesta

0

Echa un vistazo a este tutorial. Allí encontrará un ejemplo de código sobre cómo crear un CAPTCHA usando C# y el método DrawString.

Espero, esto ayuda.

+0

Es un tutorial muy bueno ... ¡Gracias! – Birdman

+0

Enlace roto .... –

+0

@ CanÜrek: Gracias. Como alternativa, puede usar el siguiente código aquí: https://code.msdn.microsoft.com/Sample-of-a-simple-Captcha-f8c75c43 – Hans

2

¿Por qué lanzar su propio captcha cuando reCAPTCHA es gratuito, accesible (a través de la opción de audio, lo que lo hace utilizable para personas con problemas visuales) y al mismo tiempo ayuda a digitalizar varias publicaciones? Incluso hay un .NET implementation.

Editar:

Al ver cómo es por diversión, echar un vistazo a "An ASP.NET Framework for Human Interactive Proofs" te pueden servir de buenas ideas. Especialmente el ImageHipChallenge ya que incluye ejemplos de código de distorsión de imagen.

Por ejemplo:

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)); 
    } 
} 

que moverá los píxeles de una onda como la moda. Tal como en la segunda palabra de tu ejemplo.

+3

Porque entonces estaría dependiendo de que los servidores de reCAPTCHA estén activos todo el tiempo. Me gustaría hacerlo local en mi servidor. – Birdman

+0

¿Vale la pena la compensación? ¿Su sitio, por ejemplo, será tan accesible para las personas con discapacidad visual como hubiera sido con reCAPTCHA? ¿Qué soporta la verificación de audio también? Sitios como Facebook y Ticketmaster [confianza] (http://groups.google.com/group/recaptcha/browse_thread/thread/b6711e4394970d06) reCAPTCHA para no bajar, por ejemplo, y tienen una gran configuración de su parte. –

+0

La parte con la verificación de audio no es importante en este momento - La parte importante aquí es el texto en sí. La solución "fácil" no siempre es la solución "divertida" para hacer. – Birdman