Я пытаюсь напечатать несколько строк текста на изображении и выровнять их по центру.
т.е.
Это
Текстовая строка
Сейчас у меня есть только левая позиция для всей строки. Любые ярлыки, чтобы заставить это работать? Я думаю, что это может быть getttfbox для всей строки, затем взрыв на разрывах строк, а затем центрировать новый текст внутри этого большего ttfbox. Это заноза в заднице...
РЕДАКТИРОВАТЬ: Придумано решение:
foreach ( $strings as $index => $string ) {
$parts = explode ( "\n", $string['string'] );
if ( count ( $parts ) > 1 ) {
$bounds = imagettfbbox ( intval($string['fontsize']), 0, $font, $string['string'] );
$width = $bounds[2] - $bounds[0];
$height = $bounds[3] - $bounds[5];
$line_height = $height / count ( $parts );
foreach ( $parts as $index => $part ) {
$bounds = imagettfbbox ( intval($string['fontsize']), 0, $font, $part );
$new_width = $bounds[2] - $bounds[0];
$diff = ( $width - $new_width ) / 2;
$new_left = $string['left'] + $diff;
$new_string = $string;
$new_string['left'] = $new_left;
$new_string['top'] = $string['top'] + ($index * $line_height);
$new_string['string'] = $part;
$new_strings[] = $new_string;
}
}
}
if ( $new_strings )
$strings = $new_strings;
В этом случае каждая строка $ представляет собой массив с некоторой информацией о том, как и что печатать. Надеюсь, это поможет кому-то.