php引入了一个函数:
imagettfbbox() – 取得使用 TrueType 字体的文本的范围
返回结果:
array imagettfbbox ( float size, float angle, string fontfile, string text )
本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小,返回一个数组。
类似于这样:
array(8) {
[0]=> int(0)
[1]=> int(9)
[2]=> int(335)
[3]=> int(9)
[4]=> int(335)
[5]=> int(-56)
[6]=> int(0)
[7]=> int(-56)
}
也就相当于下面这样,返回了这一串字体的四个点的坐标:
于是最后得到将字体居中的准确的算法:
$width = $height = 500;
$size = 50;
$file = './1.ttf';
$content = "你好啊世界";
$path = './1.png';
$a = imagettfbbox($size, 0, $file, $content); //得到字符串虚拟方框四个点的坐标
$len = $a[2] - $a[0];
$x = ($width-$len)/2;
$y = $a[3]-$a[5]
$dst = imagecreatetruecolor($width,$height);
$black = imagecolorallocate($dst, 0, 0, 0);
$white = imagecolorallocate($dst, 255, 255, 255);
imagefill($dst,0,0,$white);
imagettftext($dst,$size,0,$x,$y,$black, $file, $content);
imagepng($dst,$path);
imagedestroy($dst);
历史资源提醒--必看
该页面资源/教程来自原魔趣吧历史资源转移,因发布历史久远,部分资源/教程可能已失效或无法在最新版程序中安装使用!DZ资源建议在Discuz3.4及以下版本使用,PHP版本建议5.6。资源仅提供做代码研究学习使用!
因改版,部分贴内链接将无法正常跳转,如链接失效或未正常跳转,请利用站内搜索功能搜索资源名称获取对应资源!