Convertir texto en imagen con PHP

Iniciado por <housedir>, 13 Septiembre 2013, 09:40 AM

0 Miembros y 1 Visitante están viendo este tema.

<housedir>

hola a todos, quisiera saber como convertir texto en imagen con php, tengo un codigo y funciona bien:


<?php  
if(!isset($_GET['txt']))  
{  
exit();  
}  
  
header ("Content-type: image/png");  
$string $_GET['txt'];  
$font 4;  
$width ImageFontWidth($font) * strlen($string);  
$height ImageFontHeight($font);  
  
$im = @imagecreate ($width,$height);  
$background_color imagecolorallocate ($im255255255); //white background  
$text_color imagecolorallocate ($im00,0);//black text  
imagestring ($im$font00$string$text_color);  
imagepng ($im);  
?>



El problema es que este codigo no hace saltos de linea, quisiera por ejemplo que al enviar un texto tome de limite de ancho 600px y al toparse con ese limite haga un salto de linea y asi en todo el texto
Titulo: Padre nuestro
Padre Nuestro que estás en www.cielo.com
Santificado sea tu server, venga a nosotros tu shareware
Hágase tu downloading así en el http como en el ftp
Danos hoy nuestro surfing de cada día,
Perdona nuestros bugs
como nosotros también perdonamos a Microsoft.
No nos dejes caer en una Mac y líbranos de todo worm.
Enter...

Ragnarok

Las librerías estándar no hacen eso, o encuentras una librería que lo haga o lo calculas a mano (te será más fácil con una fuente de ancho fijo).
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

miloscorp

Hola housedir podrias probar algo asi, lo escribi sobre la marcha y no lo probe asi que seguro habra algo que corregir, despues si tengo tiempo lo pruebo. Cualquier duda me avisas, y con unos pequeños retoques podrias hasta hacer que el texto quede centrado.

<?php  
if(!isset($_GET['txt']))  
{  
exit();  
}  
  
header ("Content-type: image/png");  
$string $_GET['txt'];  
$font 4;
$ancho_caracteres ImageFontWidth($font);
$alto_caracteres ImageFontHeight($font);
$width 600;  
$cant_caracteres strlen($string);
$cant_caracteres_linea $width ancho_caracteres//Cantidad de caracteres que entran en una linea segun el ancho de la imagen
//Ahora que tenemos la cantidad de caracteres que entran a lo ancho podemos calcular la cantidad de lineas
$cant_lineas strlen($string) / $cant_caracteres//Esto nos devuelve la cantidad de lineas
$espacio 2;//Espacio entre lineas
$height = (ImageFontHeight($font) + $espacio) * $cant_lineas;
  
$im = @imagecreate ($width,$height);  
$background_color imagecolorallocate ($im255255255); //white background  
$text_color imagecolorallocate ($im00,0);//black text

$i 0;
$j 0;  
$tmp "";
$y 0;
$x 0;

Do{
Do{
$tmp .= substr($string,$i,1);
$i++;
if($j == $cant_caracteres_linea or ($cant_caracteres $i) < $cant_caracteres_linea) {
imagestring ($im$font$x += $ancho_caracteres$y$string$text_color);
$y += ImageFontHeight($font);
$j 0;
$tmp "";
if (($cant_caracteres $i) < $cant_caracteres_linea){
break;
}
}else{
$j++;
}
}while ($j $cant_caracteres_linea);
}while (
$i $cant_caracteres);
imagepng ($im);  
?>