将PHP GD中的数组文本放在图像

时间:2017-05-12 14:32:29

标签: php gd

我有一个适合页面的字符串数组,我设法将其水平居中,现在我需要在图像的特定部分做垂直。

     $imgWidth = 240;
    $imgHeight = 900;

    $IMG = imagecreatetruecolor($imgWidth,$imgHeight);
    $font_type_bold = '/dejavu/DejaVuSansCondensed-Bold.ttf';
    $background = imagecolorallocate($IMG, 78,129,154);
    $text_white = imagecolorallocate($IMG, 255,255,255);
    $IMG = imagecreatetruecolor($imgWidth,$imgHeight);
    $max_lenght_of_title = 15;
    $special_issue_name_mod="This is some example text to be put on the page and split into array to fit he width of frame";
    $text = explode("\n", wordwrap($special_issue_name_mod, $max_lenght_of_title));
    $line_height=30;
    imageline($IMG, 0, 500, 240, 500, $text_white);
    imageline($IMG, 0, 100, 240, 100, $text_white);
    for($i=0;$i<count($text);$i++) {
        $font_size_si_name_horizontal = 21;
        //Center the text
        $size = imagettfbbox(20, 0, $font_type_bold, $text[$i]);
        $long_text = $size[2] + $size[0];
        $posx = ($imgWidth - $long_text) / 2;

        imagettftext($IMG, $font_size_si_name_horizontal, 0, $posx - 5, 150+ $line_height + $line_height * $i , $text_white, $font_type_bold, $text[$i]);
    }
    header("Content-type: image/png");
    imagepng($IMG);
    imagecolordeallocate($IMG, $text_color );
    imagecolordeallocate($IMG, $background );

结果就是这个,我需要它在页面的特定部分,例如选择一个

enter image description here

那么我怎样才能使这个不是固定的中间而是调整的,取决于文本的页面部分。

注意:文字可以更长,这就是主要问题。根据文本的长度,标题应位于中间

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法

 $middle_of_page = 350;
 for($i=0;$i<count($text);$i++) { 
     $middle_of_page = $middle_of_page - 21;
}
imagettftext($IMG, $font_size_si_name_horizontal, 0, $posx - 5,  $middle_of_page+$line_height + $line_height * $i , $text_white, $font_type_bold, $text[$i]);

使用$ middle_of_page部分,我调整数组大小为1的文本的点,然后我只删除字体大小21为每个$ i代表字符串的数组大小。

enter image description here