Alhazred
22-01-2011, 10:49
Premetto che so come funzionano i captcha, l'ho già fatto in passato.
Il problema è che fino ad ora ho sempre usato creare un'immagine con sfondo colorato, sopra lo sfondo il codice e sopra il codice alcune linee.
Ora vorrei cambiare tipo di visualizzazione ed usare qualcosa di simile a questo:
http://img88.imageshack.us/img88/7324/snapil.jpg
Sulle librerie GD però mi pare di non trovare nulla di adatto.
Come faccio a far generare automaticamente una cosa del genere?
Ne trovi centinaia di tutorial che uasano GD, come questi
http://www.codewalkers.com/c/a/Miscellaneous/Creating-a-CAPTCHA-with-PHP/
http://fossaweb.net/103/php/come-creare-un-semplice-captcha-con-php/
http://www.w3facile.com/php/verifica-antispam-captcha-php-tutorial.html
Ciao:)
Alhazred
22-01-2011, 19:28
Come detto nel primo post, sono capace di creare un captcha, sto cercando di capire come creare un'immagine con l'effetto di quella postata.
I tutorial proposti creano l'immagine come la so già fare.
SerMagnus
22-01-2011, 19:33
interessa anche a me.
cmq in genere quel tipo di manipolazioni sulle immagini si fa con le matrici...
Alhazred
22-01-2011, 23:38
Mi sono scaricato aicontactsafe, è un componente per Joomla, ho spulciato il codice, ho trovato dove crea le immagini per i captcha, l'ho convertito in codice PHP "non-joomla" ed ho ottenuto un buon risultato.
Ecco come ho modificato il codice che gestisce la creazione delle immagini:
header("Content-type: image/png");
$font = "courbi.ttf";
$scale = 2;
$width = 200;
$height = 60;
$xperiod = 10;
$xamplitude = 5;
$yperiod = 12;
$yamplitude = 14;
$codice ="AK7S52";
$image = imagecreate($width,$height);
$background_color = ImageColorAllocate($image, rand(0,120), rand(0,120), rand(0,120));
$colour1 = ImageColorAllocate($image, rand(120,255), rand(120,255), rand(120,255));
imagettftext($image,26,0,30,40,$colour1,$font,$codice);
imagefilter($image,IMG_FILTER_GAUSSIAN_BLUR);
// X-axis wave generation
$xp = $scale*$xperiod*rand(1,3);
$k = rand(0, 100);
for ($i = 0; $i < ($width*$scale); $i++) {
imagecopy($image, $image,
$i-1, sin($k+$i/$xp) * ($scale*$xamplitude),
$i, 0, 1, $height*$scale);
}
// Y-axis wave generation
$k = rand(0, 100);
$yp = $scale*$yperiod*rand(1,2);
for ($i = 0; $i < ($height*$scale); $i++) {
imagecopy($image, $image,
sin($k+$i/$yp) * ($scale*$yamplitude), $i-1,
0, $i, $width*$scale, 1);
}
imagepng($image);
imagedestroy($image);
Qui il codice è fisso, ma puoi generarlo come vuoi.
Spero possa esserti utile :)
Come detto nel primo post, sono capace di creare un captcha, sto cercando di capire come creare un'immagine con l'effetto di quella postata.
I tutorial proposti creano l'immagine come la so già fare.
ah ok non avevo capito...
Sorry :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.