/*
* 版权归PHPSalon.com所有,未经许可,严禁任何形式转载
*
* Author: Wenlong Wu
*/
一、 大家先来看一段PHP代码(gif2h.php):
// 将GIF转换为C语言中的H文件
$filename = "mylogo.gif";
$fp = fopen($filename, "rb");
$buffer = fread ($fp, filesize ($filename));
fclose($fp);
$len = strlen($buffer);
$fp = fopen("mylogo.h", "wb");
fwrite($fp, "unsigned char php_logo[] = {");
for ($i=0; $i<=$len; $i++) {
if($i % 10 == 0) {
fwrite($fp, "\n\t\t");
}
if($i == $len) {
$str = str_pad(ord(substr($buffer, $i, 1)), 3, " ", STR_PAD_LEFT);
} else {
$str = str_pad(ord(substr($buffer, $i, 1)), 3, " ", STR_PAD_LEFT) . ", ";
}
fwrite($fp, $str);
}
fwrite($fp, " };\n");
fclose($fp);
?>
上述代码的作用就是将一张GIF图片文件转换为C语言中的头文件(.h)。
现在我们先来转换一张图片(mylogo.gif),在命令行方式下用PHP CLI运行如下指令:
php gif2h.php
执行后会在当前目录下生成一个 mylogo.h 文件,这个文件的内容就是PHP源代码中定义图片的数据格式。
二、 再来看看PHP源代码:
phpinfo() 中的三个LOGO都定义在main\logos.h文件里,说明如下:
unsigned char zend_logo[] = { //定义的是一个Powered by Zend的LOGO
unsigned char php_logo[] = { //定义的是一个PHP的LOGO
unsigned char php_egg_logo[] = { //定义的是一个PHP彩蛋的LOGO,也就是愚人节那天会在phpinfo()里看到的图片。
现在我们做一些小小的修改:
l 拷贝第一步生成的mylogo.h文件里的内容;
l 然后替换掉main\logos.h里unsigned char php_logo[] = {的申明部分,也就是说我们要用自己的图片替换PHP的LOGO。
l 最后重新编译一下PHP即可。
三、 最终效果图: