Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Как выровнять текст на изображении (PHP)

На генерируемых, средствами PHP (GDLib), изображениях часто приходится выводить текст. Иногда этот текст нужно выравнивать по-центру, от какой-либо точки или по правому краю. Размер текста, как правило, разного размера, поэтому необходимо выяснить размер текста в пикселях и отнять от точки вывода текста.

Список функций

Основные функции, которые понадобятся для выравнивания текста:

imagettfbbox

array imagettfbbox(float size, float angle, string fontfile, string text) — функция возвращает массив координат прямоугольника в который можно строго вписать надпись string text, размером float size, с наклоном float angle и шрифтом string fontfile.

imagettftext

array imagettftext(resource image, float size, float angle, int x, int y, int color, string fontfile, string text) — функция вывода текста на изображение.

Пример-решение

На примере выведем текст относительно вертикальной линии. По левому краю, по центру и по правому соответственно.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php

// Прописываем заголовок PNG-изображения
header('Content-type: image/png');

// Создаем изображение
$im imagecreatetruecolor(800180);

// За центр (по оси X) возьмем 400
$CENTER 400;

// Шрифт текста
$FONT 'ptserif.ttf';

// Создаем цвета
$white imagecolorallocate($im0xFF0xFF0xFF);// белый
$gray imagecolorallocate($im0xDD0xDD0xDD);// серый
$red imagecolorallocate($im0x990x330x33);// красный
$green imagecolorallocate($im0x330x990x33);// зеленый
$blue imagecolorallocate($im0x330x330x99);// синий

// Заливаем изображение белым цветом
imagefill($im11$white);

// Рисуем линии
imageline($im$CENTER0$CENTER180$gray);
imageline($im06080060$gray);
imageline($im0120800120$gray);


/**
 * Текст по левому краю, все очень просто.
 */
imagettftext($im110$CENTER20$red$FONT'Текст по ЛЕВОМУ краю');
imagettftext($im110$CENTER50$red$FONT'Текст тоже по ЛЕВОМУ краю');


/**
 * Текст по центру.
 */
// размеры текст по координатам
$box imagettfbbox(110$FONT'Текст по ЦЕНТРУ');
// размер отступа влево, чтобы текст оказался посередине заданной точки
$left $CENTER-round(($box[2]-$box[0])/2);
imagettftext($im110$left80$green$FONT'Текст по ЦЕНТРУ');

// текст по центру №2
$box imagettfbbox(110$FONT'Этот очень важный текст выровнен по ЦЕНТРУ');
$left $CENTER-round(($box[2]-$box[0])/2);
imagettftext($im110$left110$green$FONT'Этот очень важный текст выровнен по ЦЕНТРУ');


/**
 * Текст по правому краю
 * Почти так же как и "по центру" только делить на 2 не нужно отступ влево
 */
$box imagettfbbox(110$FONT'Текст по ПРАВОМУ краю');
$left $CENTER-($box[2]-$box[0]);
imagettftext($im110$left140$blue$FONT'Текст по ПРАВОМУ краю');

$box imagettfbbox(110$FONT'Этот очень важный текст выровнен по ПРАВОМУ краю');
$left $CENTER-($box[2]-$box[0]);
imagettftext($im110$left170$blue$FONT'Этот очень важный текст выровнен по ПРАВОМУ краю');


// Выводим изображение
imagepng($im);

?>

Результат

Выравнивание текст на изображение (PHP)

Опубликовано: 27 августа 2011  ·  Автор: Артём Фёдоров  ·  5895 просмотров

Категория

ГлавнаяПрограммированиеPHPРабота с изображениямиКак выровнять текст на изображении (PHP)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Работа с изображениями, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания