我在文本排队方面存在问题。我能找到的每个教程都告诉我使用imagettfbox来查找文本的尺寸。我这样做,但文字并不适合这些维度。
请参阅以下示例:
<?php
// Create image and colours
$im = imagecreatetruecolor(200, 100);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
$red = imagecolorallocate($im, 255, 0, 0);
//Set the background to be white
imagefilledrectangle($im, 0, 0, 200, 100, $white);
//font file
$font = "ARIAL.TTF";
//set sample text and fontsize
$text="102";
$size = 25;
//calculate height and width of text1
$bbox = imagettfbbox($size, 0, $font, $text);
$width = $bbox[2] - $bbox[0];
$height = $bbox[5] - $bbox[3];
//draw rectangle that should house the text
imagefilledrectangle($im, 50, 40, 50+$width, 40+$height, $red);
//draw text at same startpoint as rectangle
imagettftext($im, $size, 0, 50, 40, $black, $font, $text);
// Output to browser
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
这应该输出一个包含文本的红色矩形。它没有 - 文本略微偏向应该的位置。这只发生在某些字符串中 - 包含&#34; 1&#34;倾向于不工作,而其他一些工作完美。这是2个字符串的输出:
有谁知道发生了什么,以及我需要做些什么来使文本在边界框内正确匹配?我用多种字体测试了这一点,包括等宽字体 - 总是会发生同样的事情。