[code:1]<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> imagettfbbox与imagettftext函数的坐标系统认识 </title>
<meta name="Generator" content="macleo">
<meta name="Author" content="塔塔,macleo">
<meta name="Keywords" content="">
<meta name="Description" content="gd,php,imagettfbox,imagettfbbox">
</head>
<body>
<p>
<div align=center><table border=0 width=70%><tr>
<td valign=middle width=20><hr size=1 width=100%></td>
<td valign=middle nowrap><font color=e06060 size=+2><b>imagettfbbox与imagettftext函数的坐标系统认识</b></font></td>
<td valign=middle width=100%><hr size=1 width=100%></td>
</tr></table></div><p>
<div align=center><table border=0 width=70%><tr><td>
<br><h1><font color=0000bb>imagettfbbox函数的坐标系统的认识</font></h1><p>
写 TTF 文字到图中。<p>
<font color=ff8000>语法:</font> <b> array ImageTTFBBox(int size, int angle, string fontfile, string text);
</b><p>
<font color=ff8000>返回值:</font> 数组<p>
<font color=ff8000>函数种类:</font> 图形处理<p>
<p><table border=0 cellspacing=0 cellpadding=0 width=100% height=1><tr><td height=1 bgcolor=c0c0c0><table border=0 cellspacing=0 cellpadding=0><tr><td></td></tr></table></td></tr>
<tr><td align=left><font color=ff8000>内容说明</font></td></tr></table><p>本函数将 TTF (TrueType Fonts) 字型文字写入图片。参数 size 为字形的尺寸;angle 为字型的角度,顺时针计算,0 度为水平,也就是三点钟的方向 (由左到右),90 度则为由下到上的文字;x,y 二参数为文字的坐标值 (原点为<u><font color=red>左下角</font></u>);参数 col 为字的颜色;fontfile 为字型文件名称,亦可是远端的文件;text 当然就是字符串内容了。返回值为数组,包括了八个元素,头二个分别为左下的 x、y 坐标,第三、四个为右下角的 x、y 坐标,第五、六及七、八二组分别为右上及左上的 x、y 坐标。治募?注意的是欲使用本函数,系统要装妥 GD 及 Freetype 二个函数库。<p>
<p><font color=ff8000>使用范例</font><br>
<hr color=red width=80%>
<font color=#008200>
&lt;?php<br>
//Header("Content-type:image/png");<br>
//$im = imagecreate(400,30);<br>
//$black = ImageColorAllocate($im, 0,0,0);<br>
//$white = ImageColorAllocate($im, 255,255,255);<br>
$fontarea = ImageTTFBBox(20,0,"font/arial.ttf","I am NUMBER ONE !!");//返回值赋给$fontsize<br>
//$fontindex=sizeof($fontsize);//获得数组大小<br>
//$string=NULL;<br>
while ( list( $key, $val ) = each( $fontarea ) ) <br>
{<br>
echo "$key => $val&lt;br&gt;";<br>
}<br>
//ImageTTFText($im, 20, 0, 10, 24, $white, "font/arial.ttf", "I am NUMBER ONE !!");<br>
//Imagepng($im);<br>
//ImageDestroy($im);<br>
//计算动态图象的高和宽<br>
$font_width = $fontarea[2]-$fontarea[0];//256<br>
$font_height = $fontarea[1]-$fontarea[7];//19<br>
$images_width = $font_width+10;//定义生成计数器图象宽度<br>
//$images_height=15;//定义生成计数器图象高度<br>
$images_height = $font_height+10;<br>
$font_location_x =5;<br>
$font_location_y = ($images_height-$font_height)/2+$fontarea[7];<br>
echo "images_width=$images_width&lt;br&gt;images_height=$images_height&lt;br&gt;";<br>
echo "font_width=$font_width&lt;br&gt;font_height=$font_height&lt;br&gt;";<br>
echo "font_location_x=$font_location_x&lt;br&gt;font_location_y=$font_location_y&lt;br&gt;";<br>
?&gt;<br>
</font>
<hr color=red width=80%>
<p><font color=ff8000>使用范例的返回内容:</font><br><br>
0 => 2<br>1 => -1<br>2 => 258<br>3 => -1<br>4 => 258<br>5 => -20<br>6 => 2<br>7 => -20<br>images_width=266<br>images_height=29<br>font_width=256<br>font_height=19<br>font_location_x=5<br>font_location_y=-15<br>
<hr color=red width=80%>
<p><font color=ff8000>使用图像分析:</font><br><br>
<img src="php001.png" width="454" height="340" border=0 alt="">
<hr color=red width=80%>
<p><font color=ff8000>自己的分析:</font><br><br>
<table border=0 width=80%>
<tr>
<td>
<font color="#000000">
&nbsp;&nbsp;&nbsp;&nbsp;如果,我们按照《<font color=red>PHP 4完全中文手册</font>》的关于imagettftext函数和imagettfbbox函数的第一组返回坐标的定义来讲,它们都是左下角的坐标。<br>
&nbsp;&nbsp;&nbsp;&nbsp;那么,我觉得PHP中的imagettftext函数的字体的原点坐标就是在<u><font color=red>左上角</font></u>了!
因为,我使用imagettftext函数返回的第一组坐标是(13,24),而用imagettfbbox函数返回的第一组坐标是(2,-1),所以,从这两个坐标数值上,我们就可以判断出这两个函数要么有不同的坐标系统(<font color=red>imagettftext函数的原点坐标在左上角,而imagettfbbox函数的原点坐标在左下脚</font>),要么就是《<font color=red>PHP 4完全中文手册</font>》的说法是错误的!为了让我们使用php中的GD库调用的TTF字体能按照,我们的意图显示在一个动态生成的图象上,我们要计算出imagettftext函数的字体的大小和图象的大小,而最终确定我们的字体的显示位置。
</font>
</td>
</tr>
</table>
</body>
</html>[/code:1]
请将上述内容存为:xxx.html,将附件的内容与xxx.html存在同一目录中名称为:php001.png
如果,认为上述太麻烦,请看这里:http://www.freewebs.com/macleo/php01.html |