2014-01-22 4 views
0

В настоящее время я пытаюсь создать инфографику с помощью библиотеки PHP GD, я могу получить текст для отображения в нужном месте, но когда он станет больше, он перекрывает части изображения, которые я нахожу Это не так. То, что я хочу сделать, это иметь некоторую форму эквивалента html DIV, которую я могу разместить поверх всех моих текстовых областей и фиксированный размер, чтобы шрифт уменьшался до размера.PHP GD Вставка текста в эквиваленте div

Я пробовал использовать imagettfbox(), но он просто обертывает текст Мне нужен способ установки фиксированного размера и местоположения в виде текстовой области, через которую я могу передать строку.

Любые вопросы Просто спросите.

+0

Там нет такого понятия, встроенного в GDlib - если вы хотите, вы должны реализовать его самостоятельно, сначала проверяя размеры вашего текста, а затем изменить его вставляя разрывы строк и снова проверяя ... – CBroe

+0

Кажется, слишком много хлопот, чтобы написать что-то, что делает это, я должен буду написать что-то, что делает это сам. – bobthemac

+0

Хорошо, что вы, возможно, не первый из тех, кто столкнулся с этой проблемой, поэтому оглядывать сеть на решения может стоить ... – CBroe

ответ

0

Их простой способ обойти это, что я придумал. Если я пройду по длине раздела, где будет отображаться изображение, то проверьте длину текста, созданного GD, сравните, если ширина текста равна ширине раздела, которую он делает, и если это не размер шрифта, уменьшается на единицу, а ypos уменьшается на 0,5, чтобы гарантировать, что он по-прежнему центрирован.

Вот код

while ($width > $settings->sectionWidth) 
{ 
    $settings->fontSize -= 1; 
    $bbox = imagettfbbox($settings->fontSize, 0, $font_path, $settings->data); 
    $width = abs($bbox[4] - $bbox[0]); 
    $settings->yPos -= 0.5; 

}