2009-07-08 1 views
7

Ich habe ein Skript, das Bilder aus Text mit PHP generiert. Es funktioniert gut, außer dass ich möchte, dass es mehrzeiligen Text mit unterschiedlichen Farben erzeugt. Wie kann es mit PHP, GD und Freetype gemacht werden? Unten ist der Code, den ich verwende, um einzeilige Textbilder zu erzeugen.Erstellen von IMage aus Text in PHP - wie kann ich multiline erstellen?

$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; 

Antwort

6

Fügen Sie diese Funktion hinzu, um den Text zu verpacken, bevor er in Ihre Funktion übergeht.

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; 
} 

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

+0

Ich habe versucht, \ n mit, aber aus irgendeinem Grunde wäre es auch die \ n drucken, wie es ist :( – Ali

+0

Hallo, können Sie mir helfen zu, wie benutzerdefiniertes Hintergrundbild zu verwenden, Ich versuche mit dieser Funktion ein Captcha zu erstellen – rkaartikeyan

Verwandte Themen