Выравнивание текста по центру в PHP GD

Выводимый текст имеет разную ширину, чтобы ее определить нужно применить функцию imageftbbox(), и отнять её половину от точки вывода текста.

1

Возьмем изображение-подложку bg.png:

Изображение-подложка bg.png

Выведем текст «123456» шрифтом Helvetica.ttf в центре изображения:

$filename = __DIR__ . '/bg.png';
 
$info = getimagesize($filename);
switch ($info[2]) { 
	case 1: $img = imageCreateFromGif($filename); break;					
	case 2: $img = imageCreateFromJpeg($filename); break;	
	case 3: $img = imageCreateFromPng($filename); break;
}

$width = $info[0];
$height = $info[1];

$text = '123456';
$font = __DIR__ . '/Helvetica.ttf';
$font_size = 30;
$font_color = imagecolorallocate($img, 255, 255, 255);

$box = imageftbbox($font_size, 0, $font, $text);
$x = ($width - $box[4]) / 2;
$y = ($height - $box[5]) / 2;

imagettftext($img, $font_size, 0, $x, $y, $font_color, $font, $text);

switch ($info[2]) { 
	case 1: 
		header('Content-Type: image/gif'); 
		imageGif($img);
		break;			
	case 2: 
		header('Content-Type: image/jpeg');
		imageJpeg($img, 100);
		break;			
	case 3: 
		header('Content-Type: image/x-png');
		imagePng($img);
		break;
}

imagedestroy($img);
exit();
PHP

Результат:

Выравнивание текста по центру в PHP GD
2

Имеем изображение bg-2.png, выведем текст в по центру черной рамки:

Вывод изображения по центру блока

Рамка имеет размер 300x80 и смещение слева 60px и сверху 100px.

$filename = __DIR__ . '/bg-2.png';
 
$info = getimagesize($filename);
switch ($info[2]) { 
	case 1: $img = imageCreateFromGif($filename); break;					
	case 2: $img = imageCreateFromJpeg($filename); break;	
	case 3: $img = imageCreateFromPng($filename); break;
}

// Размер рамки и смещение
$border_width = 300;
$border_height = 80;
$ofset_top = 100;
$ofset_left = 60;

$text = '123456';
$font = __DIR__ . '/Helvetica.ttf';
$font_size = 30;
$font_color = imagecolorallocate($img, 0, 0, 0);

$box = imageftbbox($font_size, 0, $font, $text);

$offset = ($box[2] - $box[0]) / 2;
$x = ($border_width / 2) - $offset + $ofset_left;

$offset = ($box[5] - $box[1]) / 2;
$y = ($border_height / 2) - $offset + $ofset_top;

imagettftext($img, $font_size, 0, $x, $y, $font_color, $font, $text);

switch ($info[2]) { 
	case 1: 
		header('Content-Type: image/gif'); 
		imageGif($img);
		break;			
	case 2: 
		header('Content-Type: image/jpeg');
		imageJpeg($img, 100);
		break;			
	case 3: 
		header('Content-Type: image/x-png');
		imagePng($img);
		break;
}

imagedestroy($img);
exit();
PHP

Результат:

Вывод изображения по центру блока
21.03.2023
2059

Комментарии

, чтобы добавить комментарий.

Другие публикации

Определение основного цвета изображения в PHP
Определение доминирующего цвета фотографии дает возможность реализовать поиск изображений по цвету или сделать цветные...
9515
+3
PHP-класс для создания миниатюр изображений
PHP Thumb – это библиотека, основанная на PHP GD и предназначена для создания превью изображений для каталогов, товаров...
49449
+13
Как нарисовать точку в PHP GD
Примеры, как нарисовать точку в библиотеке PHP GD.
2071
+1
Рисование линий в PHP GD
Примеры использования функций библиотеки GD для рисования линий.
2699
0
Мануал по созданию и форматированию excel файлов в PHPExcel
К сожалению разработчики прекратили поддержку и разработку проекта, но PHPExcel все равно остается популярной...
129399
+37
Генерация счета на оплату PDF PHP
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
66036
+33