Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Перенос строк и центрирование текста при наложении на изображение
Форумы портала PHP.SU » » Вопросы новичков » Перенос строк и центрирование текста при наложении на изображение

Страниц (1): [1]
 

1. Heavenanvil - 04 Августа, 2017 - 17:58:08 - перейти к сообщению
Всем привет.

Работаю над кодом, который пишет текст на изображении.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //image_size: 537x240px
  3. header('Content-type: image/jpeg');
  4. $jpg_image = imagecreatefromjpeg('111.jpg');
  5. $white = imagecolorallocate($jpg_image, 255, 255, 255);
  6. $font_path = 'arial.ttf';
  7. $text = "Длинный текст, который не помещается в одну строку, нужно сделать переносы и центрировать его.";
  8. imagettftext($jpg_image, 16, 0, 11, 150, $white, $font_path, $text);
  9. imagejpeg($jpg_image);
  10. imagedestroy($jpg_image);
  11. ?>
Появилась проблема, которую никак не могу решить и прошу помощи у вас.
Как мне сделать перенос слов, из строки $text, чтобы он красиво размещался на изображении? Пробовал изменять по количеству символов, не получилось.
Значение строки $text будет меняться, от 1 до ~30 слов.
Размер шрифта меняться не должен.
Изображения всегда будут размером 537x240px.
Перенос нужно сделать не разделяя слова, то есть на местах пробелов.
Текст нужно каким-то образом центрировать по картинке. Как вертикально, так и горизонтально.
В идеале, если возможно, делать переносы равномерно. Например, чтобы не было такого, что в предложении из 7 слов, в верхней строке 6 слов, а в нижней 1. Должно быть хотя бы 4+3, 3+4, или 5+2. Возможно какие-то специальные символы для переноса придумать, аля <br>.

Готов подкинуть на пиво, тому кто поможет, пишите в ЛС или прям тут.
2. Строитель - 04 Августа, 2017 - 21:28:26 - перейти к сообщению
Heavenanvil, вроде бы так:
Спойлер (Отобразить)
3. Heavenanvil - 05 Августа, 2017 - 05:22:12 - перейти к сообщению
Строитель, всё работает превосходно.
Одна только проблема есть: вертикально этот бокс центрируется всегда на одном уровне, приблизительно по центру, но если строк будет 4 или 5, текст спозлает вниз, ниже картинки, хотя первая строка останется по центру..
Можно бокс как-то тоже вертикально центрировать в зависимости от его высоты?

Разобрался.
PHP:
скопировать код в буфер обмена
  1. $y = ((imagesy($image) - ($box[1] - $box[6]))/2);


Спасибо ещё раз. Если что, пишите в ЛС

 

Powered by ExBB FM 1.0 RC1