Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > Перенос текста по словам


Автор: Milko 4.3.2008, 11:42
Смысл такой. Юзер заргужает фото, заголовок, текст, скрипт выводит макет обьявления в нужном формате. Вверху заголовок, ниже слева фото, рядом справа текст. Ширина макета ограничена, 1000п. Так вот вопрос в том как сделать чтоб текст шел не одной строкой, а переносился по словам.
 
Сейчас это реализовано с помощью функции, которая разбивает текст по словам, циклом проверяет ширину слова, добавляет пробел, снова проверяет, если не влазит в требуемую ширину, вставляет символ переноса строки и т.д.

Может быть существует более изящное решение? 

А вообще хотелось бы чтоб текст обтекал фото, но тут вообще ничего придумать не могу. Помогите плиз.  smile 

Автор: GeneralElectric 4.3.2008, 11:50
Насколько я понял, скрипт генерирует картинку с объявлением.
А можно поинтересоваться - какие цели у такой интересной задачи? Отправить на печать?
Я почему интересуюсь - у браузеров, обычно гораздо более широкие возможности по рендерингу гипертекста, чем у библиотеки GD.

Автор: Milko 4.3.2008, 12:14
Цитата(GeneralElectric @ 4.3.2008,  11:50)
Насколько я понял, скрипт генерирует картинку с объявлением.
А можно поинтересоваться - какие цели у такой интересной задачи? Отправить на печать?
Я почему интересуюсь - у браузеров, обычно гораздо более широкие возможности по рендерингу гипертекста, чем у библиотеки GD.

Да, именно так, задача либо сохранить в файл рисунок, либо отправить на печать. Но требование такое-чтоб макет был в виде рисунка. Мои юзеры в большенстве своем с компьютером на вы, потому чем проще, тем лучше. По крайней мере распечатывать рисунки уже все научились  smile

Добавлено @ 12:24
И еще появилась проблема, не могу найти ошибку.

получаем цвет из формы и назначаем его

Код

function colOr ($color) {
                   $cl1=str_replace('#','0x',$color);
                   return $cl1;
                }

$bordercolor=colOr($bord);
              
$textcolor=colOr($textcol);



//выводим текст и прямоугольник 

imageFilledRectangle($destImage, 15, 15, 25+$destWidth, 25+$destHeight, $bordercolor);
 imagettftext($destImage, 30, 0, (20+$destWidth)/2+500-$sdx , 50-$sdy, $textcolor, $font,  $texttop);


текст получается нужного цвета, а прямоугольник тупо черного цвета! 

В чем ошибка не пойму!  smile 


 ! 
PARROT
Пользуйтесь кнопкой КОД!!!

Автор: Feldmarschall 7.3.2008, 10:30
а если руками прописать цвет в прямоугольнике - он черный? если да - то при чем тут форма? И какие отличия от примера в документации?
если нет - то почему бы не вывести то, что приходит из формы и сравнить с тем, что написано руками?

Автор: Milko 7.3.2008, 12:31
Если в $bordercolor явно прописать то что приходит из формы, то получается прямоугольник нужного цвета.  
Т.е.
Код

$bord=#132546; (то что пришло из формы)
function colOr ($color) {
                   $cl1=str_replace('#','0x',$color);
                   return $cl1;
                }

$bordercolor=colOr($bord);

получается черный прямоугольник, а если

[color=blue]$bordercolor=0х132546;


получается то что надо.




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)