Текст одной строкой не всегда умещается в заданную ширину картинки, тогда нужно переносить слова текста на новую строку в зависимости от ширины. Лишь бы ширина не оказалась меньше одного слова, а то нужен будет бубен шамана и дальше колдовать. Пример PHP кода для создания картинки текста с заданной шириной:
<?php //тип содержания header('Content-Type: image/png'); //шрифт $font = 'arial.ttf'; //размер шрифта $font_size = 10; //требуемая ширина картинки $width = 100; //отступ от краёв для текста $margin = 5; //текст $text = "Что где когда почему зачем и как, а так где когда почему зачем и как?"; //разбиваем текст на слова $text_a = explode(' ', $text); $text_new = ''; foreach($text_a as $word){ //создаём новый текст, добавляем слово и вычисляем параметры текста $box = imagettfbbox($font_size, 0, $font, $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, $text_new); //высота нового текста $height = $box[1] + $font_size + $margin * 2; //создаём картинку $im = imagecreatetruecolor($width, $height); //создаём цвета $white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); //заполняем картинку цветом imagefilledrectangle($im, 0, 0, $width, $height, $white); //добавляем текст в картинку imagettftext($im, $font_size, 0, $margin, $font_size+$margin, $black, $font, $text_new); //возвращаем картинку imagepng($im); //удаляем картинку из памяти imagedestroy($im);