2009-07-08 13 views
7

Tengo un script que genera imágenes desde texto usando PHP. Funciona bien, excepto que me gustaría generar texto multilínea también con diferentes colores. ¿Cómo se puede hacer usando PHP, GD y Freetype? A continuación se muestra el código que utilizo para generar imágenes de texto de una sola línea.Creando IMage desde texto en PHP: ¿cómo puedo hacer multilínea?

$textval = 'This is some text to be an image'; 
$textcolor = '666666'; 


$font="arial.ttf"; 
$size = 9; 
$padding= 1; 
$bgcolor= "ffffff"; 

$transparent = 0; 
$antialias = 0; 

$fontfile = $fontpath.$font; 

$box= imageftbbox($size, 0, $fontfile, $textval, array()); 
$boxwidth= $box[4]; 
$boxheight= abs($box[3]) + abs($box[5]); 
$width= $boxwidth + ($padding*2) + 1; 
$height= $boxheight + ($padding) + 0; 
$textx= $padding; 
$texty= ($boxheight - abs($box[3])) + $padding; 

// create the image 
$png= imagecreate($width, $height); 


$color = str_replace("#","",$bgcolor); 
$red = hexdec(substr($bgcolor,0,2)); 
$green = hexdec(substr($bgcolor,2,2)); 
$blue = hexdec(substr($bgcolor,4,2)); 
$bg = imagecolorallocate($png, $red, $green, $blue); 

$color = str_replace("#","",$textcolor); 
$red = hexdec(substr($textcolor,0,2)); 
$green = hexdec(substr($textcolor,2,2)); 
$blue = hexdec(substr($textcolor,4,2)); 
$tx = imagecolorallocate($png, $red, $green, $blue); 



imagettftext($png, $size, 0, $textx, $texty, $tx, $fontfile, $textval); 

header("content-type: image/jpeg"); 
imagejpeg($png); 
imagedestroy($png); 
exit; 

Respuesta

6

Agregue esta función para ajustar el texto antes de que entre en su función.

function wrap($fontSize, $angle, $fontFace, $string, $width){ 

    $ret = ""; 

    $arr = explode(' ', $string); 

    foreach ($arr as $word){ 

     $teststring = $ret.' '.$word; 
     $testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring); 
     if ($testbox[2] > $width){ 
      $ret.=($ret==""?"":"\n").$word; 
     } else { 
      $ret.=($ret==""?"":' ').$word; 
     } 
    } 

    return $ret; 
} 

Fuente: http://www.php.net/imagettftext

+0

He intentado utilizar \ n pero por alguna razón también sería imprimir la \ n ya que es :( – Ali

+0

Hola, ¿me pueden ayudar a, cómo el uso del fondo imagen personalizada, Estoy tratando de crear un captcha usando esta función – rkaartikeyan

Cuestiones relacionadas