imageloadfont()
函数用于加载用户自定义的位图字体。如果你只想使用Arial或其他TrueType字体(.ttf)或OpenType字体(.otf)(在GD库中支持后者有漏洞),那么你需要的是imagettftext()
函数。在使用imagettftext()
并将文本写入图像之前,您需要知道它是否适合。为了知道这一点,您只需要调用imagettfbbox()
函数,传递字体大小、文本角度(水平文本为0)、.ttf或.otf字体文件的路径和文本字符串,它将返回一个包含8个元素的数组,表示文本边界框的四个点(请检查PHP手册以获取具体信息)。然后,您可以引用这些数组元素并进行计算,以了解该特定文本字符串将占用的宽度和高度。然后,您可以使用这些值创建具有特定宽度和高度的图像,从而允许文本完整显示。
以下是一个简单的脚本,可帮助您开始实现您尝试的操作:
<?php
$text = 'Sample text';
$font_size = 12;
$font_file = 'Arial.ttf';
$type_space = imagettfbbox($font_size, 0, $font_file, $text);
$image_width = abs($type_space[4] - $type_space[0]) + 10;
$image_height = abs($type_space[5] - $type_space[1]) + 10;
$image = imagecreatetruecolor($image_width, $image_height);
$text_color = imagecolorallocate($image, 255, 255, 255);
$bg_color = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $bg_color);
$x = 5;
$y = $image_height - 5;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font_file, $text);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
根据您的需求相应地更改值。不要忘记阅读PHP手册。