Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2014, 21:51
Avatar de rodrypaladin
rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Problema con generación de imagenes GD

Estoy viendo por primera vez la generación de imagenes GD y he conseguido generar una imagen tipo código captcha.

Este código me funciona perfectamente:

Código PHP:
Ver original
  1. $imagen = imagecreatetruecolor(130,30); // creamos imagen 130,30
  2. $blanco = imagecolorallocate($imagen,255,255,255); // creamos el color blanco
  3. $negro = imagecolorallocate($imagen,0,0,0); // creamos color negro
  4. imagefill($imagen, 0, 0, $blanco);//llenamos el fondo de blanco
  5. imagestring($imagen, 5, 35, 6, mt_rand(10000,99999),$negro); // creamos string
  6. header('Content-type: image/png');
  7. imagepng($imagen);
  8. imagedestroy($imagen);

Ahora le he intentado añadir un script que tenía hecho de hace unos días el cual general un código aleatorio, formado por Mayusculas minúsculas y numeros ( quité los signos para el captcha ) pero la cuestión es que en vez de añadir en el imagenstring el mt_rand, llamo a la función que muestra el código llamada cadena() pero la imagen que genera está totalemente en blanco sin el string.

pego el código:

Código PHP:
Ver original
  1. <?php
  2. function cadena() {
  3. $cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  4. $cadena .= "abcdefghijklmnopqrstuvwxyz";
  5. $cadena .= "1234567890";
  6. $aleatoria = array();
  7. for($i=0;$i<5;$i++) {
  8. $aleatoria[] = $cadena[mt_rand(0,strlen($cadena))];
  9. str_shuffle($cadena); }
  10. foreach($aleatoria as $datosAleatoria) {
  11. echo $datosAleatoria; }
  12. }
  13.  
  14. $imagen = imagecreatetruecolor(130,30); // creamos imagen 130,30
  15. $blanco = imagecolorallocate($imagen,255,255,255); // creamos el color blanco
  16. $negro = imagecolorallocate($imagen,0,0,0); // creamos color negro
  17. imagefill($imagen, 0, 0, $blanco);//llenamos el fondo de blanco
  18. imagestring($imagen, 5, 35, 6, cadena(),$negro); // creamos string
  19. header('Content-type: image/png');
  20. imagepng($imagen);
  21. imagedestroy($imagen);
  22. ?>

Lo primero que he pensado es que la función cadena() estaría mal pero la he probado y funciona perfectamente.

conclusión, si pongo en el imagestring un string directo "ejemplo" o un mt_rand(x,x) me funciona pero si añado el llamamiento a cadena() no funciona

¿ Pueden echarme un cable ? Gracias de antemano
__________________
No te olvides de dar +1 a quien te echa un cable ;)