利用PHP动态图像制作按钮

网络与通信

PHP是“Hypertext Preprocessor”的缩写,是一种 HTML内嵌式的语言(类似IIS上的ASP);也许你只听说过用Photoshop等做按钮,没见过用编网页的语言制作按钮。其实,PHP一个重要的特点也是非常有用的特点就是支持动态图像的生成。换句话说,PHP具有非常强的作图功能,能“临时”画出图像。
我们先设想这样一个场景:在制作一个网页时,要用到很多按钮,每个按钮都是用一幅图像来实现。尽管每个按钮除了上面的文字不一样,背景图案、大小、样式等都一样(特别是目前流行的导航栏式按钮)。但是,按照以前通用的方法还是为每个按钮都制作一个GIF静态图片,用到的时候再一一将其读入。
为了突出PHP的动态效果,我们不妨换个思路:既然只有按钮上的文字不同,我们只需要保存一个按钮的静态背景图像(见(图1)),在主页上显示的时候,在这个背景图像上“画”上不同的文字就可以制作出不同的按钮了,其效果如(图2)所示。

图1
图1
图2
图2

下面就是实现“画文字”的PHP代码:
Header("Content-type:image/jpeg");
$string=implode($argv,"");
$pic=ImageCreateFromJPEG("images/button.jpg");
$white=ImageColorAllocate($pic,255,255,255);
$px=(ImageSX($pic)-9*strlen($string))/2;
ImageString($pic,8,$px,1,$string,$white);
ImageJPEG($pic);
ImageDestroy($pic);
?>
上述代码在笔者本机Windows2000 IIS和51.net的Unix服务器上运行通过。我们将上述代码保存为button.php。
代码解释:
第二行,取下紧跟文件名后的字符串。例如,这样引用:“button.php?home”,可得$string为“home”。第三行,由于GIF图像算法涉及版权问题,所以建议使用JPG图像。语句作用是读出背景(图片在images目录中)。第五行,计算出字符串在图像上起始横坐标,使得文字在图像上居中显示。第六行,把文字写到图片上。
编写好了PHP代码,剩下的只是在网页中引用它。在需要加入按钮的地方,输入“”即可。实现如图2中按钮效果的 HTML源码:


<br>









可见,利用PHP的动态图像功能成批制作这样的按钮是非常方便的。笔者在使用过程中唯一感到遗憾的是这种方法不能在按钮上显示汉字(PHP 画图时把汉字拆成两个字符)。要是哪位朋友知道怎么显示汉字,请一定告诉我。
补充一下,在Windows版的PHP下,要实现PHP画图功能还要在PHP配置文件 php.ini 中找到“LoadExtensions”部分,加入:
“extension=gd.dll”,如下所示:
[LoadExtensions]
;if you wish to have an extension loaded automatically,use the
;following suytax:extension=modulename.extension
;for example,on windows,
extension=gd.dll
以上代码目的是装上GD库用来画图。