首先是查看GD库有没有被正确的安装和加载.通过gd_info()可以看,或者phpinfo。在phpinfo中可以看到gd一栏,然后版本如果是 bundled (2.0.34 compatible) 的话,是从php4.3之后开始绑定的。如果没有的话,可以用命令安装一个:
sudo apt-get install php5-gd.或者为了安装完整版本的,在源列表中添加两行:
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
然后升级下:sudo apt-get update. 再安装php5-gd.
网上有说,安装完成后php.ini会更新,但是我的并没有。搜到gd.so在/usr/lib/php5/20060613+lfs /下,php.ini在/etc/php5/apach2下.于是手动修改php.ini。在其中修改extension_dir=”/usr/lib /php5/20060613+lfs/”,再添加一行extension=gd.so.之后重启apach2: sudo /etc/init.d/apach2 restart。
这些完成后可以写个测试的小程序。我使用的是php手册上的例子.文件名为pic.php。
123456789 |
<?php header("Content-type:image/png"); $im= imagecreatetruecolor(300, 200); $bg_color= imagecolorallocate($im, 0, 0, 0); $text_color= imagecolorallocate($im, 23, 14, 91); imagestring($im, 1, 5, 5,"A Simple Text String", $text_color); imagepng($im); imagedestroy($im);?> |
浏览器中打开时,开始遇到了些问题。发现提示我下载文件,下载后用gvim打开发现是乱码,不过其中可以看到PNG字样,猜想这应该就是png图像的二进 制数据,不过没有被浏览器识别。用ultraedit和其他的png图像对比后,发现PNG图像头都相同,只是结尾多了四个字节。不过更名为 pic.png后可以用图像查看器打开。
继续搜,最后在phpchina论坛上看到了很多人问这个问题。找到了一个貌似答案的说法。说是这个php代码是生成图片的,所以不要在php代码之前输 出任何东西,包括空格。试了下,果然可以了。不过需要先关闭浏览器,再打开,不然浏览器输出的是缓存的东西。在另一个文件test.php中用img的 src属性调用src=”pic.php”,这个显示正常。所以我觉得,如果需要用gd库生成图片的,最好生成图片的文件单独出来。
终于纠结完了,开始写验证码。