Ver Mensaje Individual
  #15 (permalink)  
Antiguo 28/06/2011, 13:12
konvulsion
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: Código para meter texto en imagen

Stramin, me ha funcionado el script, pero es sólo para evitar caracteres extraños... y yo en eso no tengo problema. Ahora lo alucinante es que hace 2 o 3 días que tengo un código que me centra el texto... pero dependiendo del número de letras. O sea, de horizontal me lo centra a la perfección, pero de vertical se coloca el string donde quiere. Quizá la clave está en el strlen ese, que creo que coloca el string en la pantalla dependiendo de la largada del string, pero he intentado ponerlo de varias maneras y eso es un festival de errores. El código es este:

Código PHP:
Ver original
  1. <?php
  2. // texto a convertir
  3. if( isset($_GET['string']).($_GET['string2']) && !empty($_GET['string']).($_GET['string2'])){
  4. $string = trim($_GET['string']);
  5. $string2 = trim($_GET['string2']);
  6.  
  7. // tamaño de la imagen
  8. $im = imagecreatetruecolor(500, 300);
  9. $im = imagecreatefromPng("dibujos/ejemplo2.jpg");
  10. // fondo blanco y texto azul
  11. $bg = imagecolorallocate($im, 0, 0, 0);
  12. $textcolor = imagecolorallocate($im, 255, 0, 0);
  13. $textcolor2 = imagecolorallocate($im, 255, 255, 255);
  14.  
  15. // escribimos el texto en la parte superior-izquierda
  16. imagerectangle($im, 35, 35, 464, 464, $textcolor);
  17. $cajaTexto = imagettfbbox(25, 0, "times.ttf", $string);
  18. $cajaTexto2 = imagettfbbox(10, 0, "tahoma.ttf", $string2);
  19. $xCentrado = (imagesx($im) - $cajaTexto[2]) / 2;
  20. $yCentrado = (imagesy($im) - $cajaTexto[3]) / 2;
  21. $xCentrado2 = (imagesx($im) - $cajaTexto2[2]) / 2;
  22. $yCentrado2 = (imagesy($im) - $cajaTexto2[3]) / 2;
  23. imagettftext($im,25,0,$xCentrado, $yCentrado, $textcolor,"times.ttf",$string);
  24. imagettftext($im,10,0,$xCentrado2, $yCentrado2, $textcolor2,"tahoma.ttf",$string2);
  25.  
  26. // mostrar la imagen
  27. header("Content-type: image/png");
  28. imagepng($im);
  29.  
  30. }else{ ?>
  31. <form action="" align="left" name="form1" method="get" enctype="multipart/form-data">
  32. <p><left><input name="imagen" type="file" size="20"></left></p>
  33. <input type="text" style="text-align:center" name="string" value="Título" onfocus="if (this.value=='Título') this.value=''" onblur="if (this.value=='') this.value='Título'" size="20" onKeyUp="limita(this,100);" onKeyDown="limita(this,100);">
  34. <p>
  35. <input type="text" name="string2" style="text-align:center" value="Subtítulo" onfocus="if (this.value=='Subtítulo') this.value=''" onblur="if (this.value=='') this.value='Subtítulo'" size="20" onKeyUp="limita(this,400);" onKeyDown="limita(this,400);"></textarea>
  36. <p>
  37. <input type="submit" name="Submit" value="Enviar">
  38. </form>
  39. <?php } ?>

Ya me estoy liando con querer que suban una imagen aparte de la que se crea con php, pero no consigo que no me dé error. Sí que veo la que pongo directamente en el código, pero se trata de visualizar lo que saque el input (Pero bueno, estoy investigando, a ver qué consigo... Lo de centrar mejor lo dejo para lo último).

Ni caso de los echos, eso me servía a mí al principio.