Динамическое GD изображение ширины текста - PullRequest
4 голосов
/ 15 ноября 2009

Я пытаюсь оживить свой сайт, используя пользовательские шрифты для заголовков. Для меня наиболее подходящий способ сделать это - использовать PHP и GD. Я написал небольшой сценарий, который будет выводить динамический текст на основе значения $ _GET, однако иногда изображение слишком широкое, что смещает все остальное.

Как я могу получить изображение, чтобы отрегулировать его ширину, основываясь на ширине текста? Вот код, который я написал до сих пор:

<?php
// Settings
$sText = $_GET['t']; // Text of heading
$sFont = "font/AvantGarde-Book.ttf"; // Default font for headings
$sMain = $_GET['c'] ? $_GET['c'] : 0xF2AB27; // Get a font or default it

// Create the image
header("content-type: image/png"); // Set the content-type
$hImage = imagecreatetruecolor(200, 24);
ImageFill($hImage, 0, 0, IMG_COLOR_TRANSPARENT);
imagesavealpha($hImage, true);
imagealphablending($hImage, false);
imagettftext($hImage, 20, 0, 0, 24, $sMain, $sFont, $sText); // Draw the text
imagepng($hImage); // Generate the image
imagedestroy($hImage); // Destroy it from the cache ?>

Спасибо!

Ответы [ 2 ]

6 голосов
/ 16 ноября 2009

Хорошо, я понял это! Для тех, кто может иметь эту проблему, вам нужно добавить:

// Calcuate the width of the image
$arSize = imagettfbbox(24, 0, $sFont, $sText);
$iWidth = abs($arSize[2] - $arSize[0]);
$iHeight = abs($arSize[7] - $arSize[1]);

Перед изображением создать цвет ()

4 голосов
/ 15 ноября 2009

Функция imagettfbbox вычислит размер текста на основе выбранного вами шрифта. Используйте результаты вашего звонка в imagecreatetruecolor.

...