В настоящее время я работаю над веб-сайтом и в последнее время использую GD с PHP для автоматического создания прозрачных изображений, которые состоят из текста для использования с навигацией, заголовками и т. Д. На веб-сайте. Это экономит мне много времени в Photoshop, и я могу мгновенно менять текст на кнопках, когда это необходимо.
Ну, я зашел в тупик. Я нашел метод определения размера «текстового поля», созданного как мое изображение, в соответствии с размером текста. Но проблема, с которой я сталкиваюсь, заключается в том, что я использую шрифт TTF, который отличается от того, что GD ожидает от размера. По сути, последняя буква будет отрублена на выходе изображения. Поэтому мне было интересно, есть ли способ исправить это, сохраняя при этом острый край текста или сделать исходное текстовое поле намного большего размера, а затем «обрезать» прозрачные пиксели на изображении.
Это код, с которым я сейчас работаю ...
<?
$text = strip_tags($_GET['btn']);
if(file_exists('nav_'.$text.'.png')) {
header("Content-type: image/png");
$image = imagecreatefrompng('nav_'.$text.'.png');
imagesavealpha($image, true);
imagealphablending($image, false);
imagepng($image);
imagedestroy($image);
} else {
header("Content-type: image/png");
$fontSize = 10;
$angle = 0;
$font = "RonniaBold.ttf";
$size = imagettfbbox($fontSize, $angle, $font, $text);
$image = imagecreatetruecolor(abs($size[2]) + abs($size[0]) + 5, abs($size[7]) + abs($size[1]) + 5);
imagesavealpha($image, true);
imagealphablending($image, false);
$transparentColor = imagecolorallocatealpha($image, 200, 200, 200, 127);
imagefill($image, 0, 0, $transparentColor);
$textColor = imagecolorallocate($image, 125, 184, 222);
imagettftext($image, $fontSize, 0, 1, abs($size[5])+1, $textColor, $font, str_replace('_',' ',strtoupper($text)));
imagepng($image, 'nav_'.$text.'.png', 0);
imagedestroy($image);
}
?>
Надеюсь, у вас, ребята, есть понимание этого, я действительно смогу это использовать!