2011-10-26 24 views
5

Sono in procinto di fare il mio controllo Captcha sul mio sito web. lavoro di Tutto, tranne Ho bisogno di alcuni blurryness/effetti sul mio testo che non è visualizzabile da un webcrawler eccImmagine Captcha - ASP.NET

Parte del codice utilizzato per generare il testo sull'immagine:

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; 

Esempio:

enter image description here

Cosa posso fare per ottenere i miei effetti/sfocature sul mio testo?

Grazie!

+1

Nel caso in cui siete alla ricerca di una soluzione completa - http://code.google.com/apis/recaptcha/docs/aspnet.html – jrummell

+1

Grazie! Ma ho già una soluzione completa pronta per l'uso. Mi piacerebbe molto codice mio. – Birdman

risposta

0

Dai un'occhiata a questo tutorial. Qui troverai un esempio di codice su come creare un CAPTCHA usando C# e il metodo DrawString.

Spero che questo aiuti.

+0

Questo è un tutorial molto bello .. Grazie! – Birdman

+0

Collegamento interrotto .... –

+0

@ CanÜrek: Grazie. In alternativa è possibile utilizzare il seguente codice qui: https://code.msdn.microsoft.com/Sample-of-a-simple-Captcha-f8c75c43 – Hans

2

Perché estrarre il proprio captcha quando reCAPTCHA è gratuito, accessibile (tramite l'opzione audio, rendendolo utilizzabile per le persone con problemi visivi) e allo stesso tempo aiuta a digitalizzare varie pubblicazioni? C'è anche un .NET implementation.

Edit:

Vedendo come è per divertimento, con uno sguardo al "An ASP.NET Framework for Human Interactive Proofs" potrebbe darvi alcune buone idee. Soprattutto lo ImageHipChallenge in quanto include esempi di codice di distorsione dell'immagine.

Ad esempio:

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

che sposterà i pixel in onda come la moda. Come nella seconda parola del tuo esempio.

+3

Perché in questo caso dipenderei dal fatto che i server di reCAPTCHA siano sempre attivi. Mi piacerebbe renderlo locale al mio server. – Birdman

+0

Vale la pena il trade off però? Ad esempio, il tuo sito sarà accessibile alle persone ipovedenti come sarebbe stato con reCAPTCHA? Che supporta anche la verifica audio? Siti come Facebook e Ticketmaster [trust] (http://groups.google.com/group/recaptcha/browse_thread/thread/b6711e4394970d06) reCAPTCHA non vanno giù per esempio e hanno una configurazione molto robusta dalla loro parte. –

+0

La parte con la verifica audio non è importante al momento - La parte importante qui è il testo stesso. La soluzione "facile" non è sempre la soluzione "divertente" da fare. – Birdman