Estoy tratando de imprimir varias líneas de texto en una imagen y centrarlas en el centro.Centro alineando varias líneas de texto con GD y PHP
decir
Esta es
Una cadena de texto
En este momento, sólo tengo la posición izquierda para toda la cadena. ¿Hay algún atajo para hacer que eso funcione? Creo que debería ser un getttfbox en toda la cadena, luego un estallido en los saltos de línea, luego centrar el nuevo texto dentro de ese ttfbox más grande. Eso es un dolor en el culo ...
EDIT: se le ocurrió una solución:
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;
En este caso, cada cadena $ es una matriz con un poco de información acerca de cómo y por qué imprimir. Espero que ayude a alguien.
Por favor, no editar su respuesta a su pregunta, pero en lugar de escribir una nueva respuesta (y aceptar que, si esa es la solución que funcionó para usted). – darthmaim