Выравнивание нескольких строк текста по центру с помощью GD и PHP

Я пытаюсь напечатать несколько строк текста на изображении и выровнять их по центру.

т.е.

    Это
Текстовая строка

Сейчас у меня есть только левая позиция для всей строки. Любые ярлыки, чтобы заставить это работать? Я думаю, что это может быть 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;

В этом случае каждая строка $ представляет собой массив с некоторой информацией о том, как и что печатать. Надеюсь, это поможет кому-то.

5
задан Seamus James 16 March 2012 в 00:04
поделиться