### 使用 PHP3 建立动态图象

大多数人并不了解 php3 也可以处理非 HTML 类型的数据，例如图象，我们可以用它来建立条型、柱状、饼图来反应数据库的数据，我们也可以用 PHP3 来建立好看的图形按纽。 大多数图形按纽是用图象编辑工具完成的，对于对图象无经验的程序员来说，这可是一件苦差事，在建立一个站点的时候，按纽的风格大多是统一的，区别在于按纽上的字，为了解除苦恼，我们可以使用 TTF 字体和 PHP3 的图形函数库建立一个按纽函数，需要按纽的时候调用一下即可，下面就是程序 button.php3：

本函数传递两个参数，$s 是字体大小，$text 是字，如有空格用+号代替

<?
Header( "Content-type: image/gif");
//缺省字体大小，未设的话为 11
if(!isset($s)) $s=11;
/* 计算 ttf 文字 text 所占区域
函数 imagettfbbox(字体大小,旋转角度,字体路径,字)
传回一个数组,有八个数组元素
size[0]=左下 X 坐标
size[1]=左下 Y 坐标
size[2]=右下 X 坐标
size[3]=右下 Y 坐标
size[4]=右上 X 坐标
size[5]=右上 Y 坐标
size[4]=左上 X 坐标
size[5]=左上 Y 坐标
*/
$size = imagettfbbox($s,0, "/fonts/TIMES.TTF",$text);
//取字串的长度和高度绝对值，如是 double，abs 后还是 double，其它 abs 后变成 int 类型
$dx = abs($size[2]-$size[0]);
$dy = abs($size[5]-$size[3]);
//为上下左右留出各 4 个象素左右的空隙，加上一个象素的阴影，共 4*2+1=9
$xpad=9;
$ypad=9;
//建立图象区域
$im = imagecreate($dx+$xpad,$dy+$ypad);
//设置颜色 ImageColorAllocate(图象句柄,red,green,blue)三原色
$blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
//绘制矩形 ImageRectangle(图象句柄,左上 X,左上 Y,右下 X,右下 Y,颜色)
//绘出阴影
ImageRectangle($im,1,1,$dx+$xpad,$dy+$ypad,$black); ImageRectangle($im,0,0,$dx+$xpad-1,$dy+$ypad-1,$white); ImageRectangle($im,1,1,$dx+$xpad-1,$dy+$ypad-1,$blue);
//写字体到图象中
//ImageTTFText(图象句柄,字体大小,旋转角度,字左上 X,字左上 Y,颜色，字体路径，字)
//绘出阴影
ImageTTFText($im, $s, 0, (int)($xpad/2)+1, $dy+(int)($ypad/2), $black, "/fonts/TIMES.TTF", $text);
ImageTTFText($im, $s, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $white, "/fonts/TIMES.TTF", $text);
//转化为 gif
ImageGif($im);
ImageDestroy($im);
?>

注意：不要在这个文件中包含任何 HTML 的代码，同时在<? 和 ?>之间也不能有空行，否则程序将无法正常运行，本函数最终将建立一副图象。