技术开发 频道

用PHP实现动态按钮

【IT168技术文档】
<?php /************************************************************** * 动态按钮 * * http://justice.loyola.edu/~rcapelli/dynamic_button/ * * * * 作者: Rob Capellini * * 最后更改日期: 1999年3月22日 * * 注意:以下这段程序中有很大一部的代码是来源于其它人的程序,我 * 只不过把它们组合起来了,为此,我不能也不会为了下面的程序 * 而取得值得荣誉的感觉。我只是加入了一些功能性的东西。 * *比如: * * http://www.phpbuilder.com/columns/rasmus19990124.php3 * http://webdev.berber.co.il/get_example.php3?count=402 * * 这个程序是通过了GD Library创建了具有动态性的按钮,就像IE上的一样, *在这个程序中,你可以改变按钮的大小、文字、字体、字体大小 **************************************************************/ /* "gd.so" 是 GD library 文件,在 GNU\Linux 中必须的文件 */ /* 提示:如果是在Windows下,该文件应该是——PHP_GD.DLL */ dl( "gd.so"); /* 我们还需要 Radloff Claus' 的colors.php 文件 */ require( "colors.php"); /*设置一些初始化变量 */ $BaseFontDir = "../ttf/"; $Fontname = "TIMES"; $sz = 11; $fgcolor = "white"; $bgcolor = "blue"; $xpad=9; $ypad=9; $text= "This text is the default text."; /*从 URL中得传来的参数 */ $query_string = getenv( "QUERY_STRING"); /* 以&为界限折分参数 */ $env_array = split( "&", $query_string); /* 把参数名和值拆分出来,并把值转成 %XX 形式 */ while (list($key, $val) = each($env_array)) { list($name, $wert) = split( "=", $val); $name = urldecode($name); $wert = urldecode($wert); // 写入 $cgivars $CGIVars[$name] = $wert; }

/* 检查一下用户设定了那些值? */ if ($CGIVars[ "text"]) $text = $CGIVars[ "text"]; if ($CGIVars[ "sz"]) $sz = $CGIVars[ "sz"]; if ($CGIVars[ "font"]) $Fontname = $CGIVars[ "font"]; $Font_File = $BaseFontDir . $Fontname . ".TTF"; if ($CGIVars[ "xpad"]) $xpad = $CGIVars[ "xpad"]; if ($CGIVars[ "ypad"]) $ypad = $CGIVars[ "ypad"]; if ($CGIVars[ "fgcolor"]) $fgcolor = $CGIVars[ "fgcolor"]; $fg = GetColor($fgcolor); if ($CGIVars[ "bgcolor"]) $bgcolor = $CGIVars[ "bgcolor"]; $bg = GetColor($bgcolor); /* 输出文件头类型 */ Header( "Content-type: image/gif"); /* 得到所选字体的大小 */ $size = imagettfbbox($sz,0, $Font_File,$text); /* 得到文字的高和宽*/ $dx = abs($size[2]-$size[0]); $dy = abs($size[5]-$size[3]); /* 初始化一幅图片 */ $im = imagecreate($dx+$xpad,$dy+$ypad); $background = ImageColorAllocate($im, $bg[ "red"], $bg[ "green"], $bg[ "blue"]); $foreground = ImageColorAllocate($im, $fg[ "red"], $fg[ "green"], $fg[ "blue"]); $black = ImageColorAllocate($im, 0,0,0); $white = ImageColorAllocate($im, 255,255,255); /* 开始创建图片 */ ImageRectangle($im,0,0,$dx+$xpad-1,$dy+$ypad-1,$black); ImageRectangle($im,0,0,$dx+$xpad,$dy+$ypad, $white); ImageTTFText($im, $sz, 0, (int)($xpad/2)+1, $dy+(int)($ypad/2), $black, $Font_File, $text); ImageTTFText($im, $sz, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $foreground, $Font_File, $text); /* 把图片发送给客户端 */ ImageGif($im); /* 创建了图片变量,当然要释放内存了 */ ImageDestroy($im); ?>
0
相关文章