Добрый день. Прошу пожалуйста помочь с задачей. Как реализовать вывод текста в изображении с переносом строк также, как в textarea? Имеется такой код PHP: //размер шрифта $font_size = $titlesize[0]; //требуемая ширина картинки $width = 1050; //отступ от краёв для текста $margin_x = 220; $margin_y = 600; //разбиваем текст на слова $text_a = explode(' ', $_GET['bg_txt']); $text_new = ''; foreach($text_a as $word){ //создаём новый текст, добавляем слово и вычисляем параметры текста $box = imagettfbbox($font_size, 0, $font_txt, $text_new.' '.$word); //если строка влезает в заданную ширину, то добавляем слово с пробелом, если нет то переносим на новую строку if($box[2] > $width - $margin*2){ $text_new .= "\n".$word; } else { $text_new .= " ".$word; } } //убираем первый пробел $text_new = trim($text_new); //нужны параметры нового текста $box = imagettfbbox($font_size, 0, $font_txt, $text_new); $leftt = $margin_x-round(($box[2]-$box[0])/2); //высота нового текста $height = $box[1] + $font_size; //добавляем текст в картинку imagettftext($im_end, $font_size, 0, $margin_x, $font_size+$margin_y-($height / 2), $black, $font_txt, $text_new); Данный код исправно выводит текст с переносом текста, если тот не умещается в ширину. Но никак не могу понять, как реализовать перенос текста, чтобы если в textarea было написано: " Всем привет! Вот тут текст Текст с переносом слов. " Текст в изображении выводился также, как выше, а не так, как ниже: " Всем привет! Вот тут текст Текст с переносом слов.
предположу, что ширина textarea должна = ширине изображения, ну и размер символов совпадать что скорее всего невозможно в общем случае... так как размер текста а textarea а соответственно и переносов будут менять от размера шрифта в нем... и легко может изменится например при изменении масштаба браузера
Размер шрифта фиксированный. Сейчас у меня он переносит слова на другие строки без изменения размера шрифта, но переносит сам, когда заканчивается ширина, что я задал в image. Вот я и ищу способ, чтобы клиент мог сам сделать перенос строки, без ожидания перезаполнения выделенной ширины в image Ширина textarea не можем быть = ширине изображения, т.к. в ширину без переноса возможно ввести до 5 слов. Вот я и ищу решение, чтобы если клиент захочет в 1 строке ввести всего 2 слова и после во 2 строке ввести 5 слов, то в image отобразилось также " в 1 строке 2 слова, а во 2 строке 5 слов" , а не "5 слов в 1 строке и автоматический перенос оставшихся 2 слов во 2 строку"
тогда смотрите получившуюся строку на предмет переноса строки - разбейте ее например explode() в результате у вас будет не одна строка а 3 например - их уже в изображение и выводите, одну под другой