Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Координаты тексту 
V
    Опции темы
gta4kv
Дата 5.10.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 8
Всего: 91



Здравствуйте,

есть картинка ( созданная средствами пхп ), не определенного размера, есть текст не определенный длины.

Вывожу с помощью imagettftex (imagettftext($im,8,0,$x,imagesy($im)/2+4,$f,'template/verdana.ttf',$text);

Нужно расчитать координату/размер текста что бы текст всегда был по середине.

 smile 
PM MAIL   Вверх
ewolf
Дата 7.10.2007, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 2
Всего: 18



Пройдя на php.net в раздел документация, мы можем посмотреть описание функции imagettftext
http://www.php.net/manual/ru/function.imagettftext.php

Там есть такой пункт "Смотрите также" и в нем приведена функция imagettfbbox()
http://www.php.net/manual/ru/function.imagettfbbox.php

которая "Give the bounding box of a text using TrueType fonts".

Соотвественно, это та функция, что тебе нужна.

А посмотрев вот этот комментарий
http://www.php.net/manual/ru/function.imagettfbbox.php#68518

можно получить представление о том, как отцентровать текст относительно некоторой точки.
PM MAIL ICQ   Вверх
gta4kv
Дата 9.10.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 8
Всего: 91



Текст просто уполз в верхний левый угол..
PM MAIL   Вверх
ewolf
Дата 9.10.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 2
Всего: 18



Приведи свой код
PM MAIL ICQ   Вверх
gta4kv
Дата 9.10.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 8
Всего: 91



Цитата(ewolf @ 9.10.2007,  16:56)
Приведи свой код

Ногами не бить...

Код


    function imagebutton($text, $color,$bordercolor,$textcolor) {
     
     $size = 8;
     $font = 'template/verdana.ttf';
     
     $box = imageTTFBbox($size,0,$font,$text);
     $width = abs($box[4] - $box[0]);
     $heigth = abs($box[5] - $box[1]);
     $x -= $width/2;
    $y += $heigth/2;
     
     $text = tounicode($text,"w");
     
     $color = rgb2hex2rgb($color);
     $bordercolor = rgb2hex2rgb($bordercolor);
     $textcolor = rgb2hex2rgb($textcolor);
        $im = imagecreate(117,25);
        $i = imagecolorallocate($im,$color[red],$color[green],$color[blue]);
        $b = imagecolorallocate($im,$bordercolor[red],$bordercolor[green],$bordercolor[blue]);
        $f = imagecolorallocate($im,$textcolor[red],$textcolor[green],$textcolor[blue]);
        imagefill($im,imagesy($im),imagesx($im),$i);
        $k = imagecolorallocate($im,255,255,255);
        
        imagesetthickness($im,1);
        imageline($im, 1,0,imagesx($im),0, $b);
        imageline($im, 0, imagesy($im)-1, imagesx($im), imagesy($im)-1 ,$b);
        imageline($im, 0, 0, 0, imagesy($im), $b);
        imageline($im, imagesx($im)-1, 0, imagesx($im)-1, imagesy($im)-1, $b);
        imageline($im, 0,0,0,0,$k); // Закругляем левый верхний угол
        imageline($im, imagesx($im),0,imagesx($im)-1,0,$k); // Закругляем правый верхний угол
        imageline($im, 0, imagesy($im)-1, 0, imagesy($im)-1, $k); // Закругляем левый нижний
        imageline($im, imagesx($im)-1,imagesy($im)-1,imagesx($im)-1,imagesy($im)-1,$k); // Закругляем правый нижний
        //imageline($im, 0,0,imagesx($im),imagesy($im),$g);
        
        imagettftext($im,$size,0,$x,$y,$f,'template/verdana.ttf',$text);
        

                header("Content-type: image/png");
        imagepng($im);
         
    }


PM MAIL   Вверх
ewolf
Дата 9.10.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 2
Всего: 18



Ну так вот здесь

Код

$x -= $width/2;
$y += $heigth/2;


Сначала переменным $x и $y надо присвоить точку, относительно которой ты хочешь отцентровать текст.


PM MAIL ICQ   Вверх
gta4kv
Дата 10.10.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 8
Всего: 91



Цитата(ewolf @ 9.10.2007,  22:07)
Ну так вот здесь

Код

$x -= $width/2;
$y += $heigth/2;


Сначала переменным $x и $y надо присвоить точку, относительно которой ты хочешь отцентровать текст.

О, спасибо, я что то не подумал что стоит прочитать сам комментарий. smile)

Вот так нормально стало: 
Код

$x = imagesx($im)/2;
$y = imagesy($im)/2.6+1.5;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.1232 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.