我有一个适合页面的字符串数组,我设法将其水平居中,现在我需要在图像的特定部分做垂直。
$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 );
结果就是这个,我需要它在页面的特定部分,例如选择一个
那么我怎样才能使这个不是固定的中间而是调整的,取决于文本的页面部分。
注意:文字可以更长,这就是主要问题。根据文本的长度,标题应位于中间
答案 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代表字符串的数组大小。