PHP返回1x1透明GIF,这个数据是如何编码的?

时间:2011-04-22 12:25:29

标签: php image header http-headers

我见过这个web beacon image here

代码如下所示:

header( 'Content-type: image/gif' );
# The transparent, beacon image
echo chr(71).chr(73).chr(70).chr(56).chr(57).chr(97).
     chr(1).chr(0).chr(1).chr(0).chr(128).chr(0).
     chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).
     chr(33).chr(249).chr(4).chr(1).chr(0).chr(0).
     chr(0).chr(0).chr(44).chr(0).chr(0).chr(0).chr(0).
     chr(1).chr(0).chr(1).chr(0).chr(0).chr(2).chr(2).
     chr(68).chr(1).chr(0).chr(59);

这使得PHP很容易返回透明的GIF图像。但是,如果我想更改图像,我该怎么办?如何将我创建的任何GIF转换为此格式?

感谢。

2 个答案:

答案 0 :(得分:4)

为什么不将图像放在文件中让PHP读取并返回?

header('Content-type: image/gif');
readfile('file.gif');

如果您真的想将图像转换为PHP代码,请一次读取一个字节并创建如下所示的PHP代码:

<?php
$fh = fopen('file.gif', 'r');
$i = 0;
echo 'echo ';
while(!feof($fh)) {
  $byte = fread($fh, 1);
  $num = ord($byte);
  echo 'chr(', $num, ')';
  if(!feof($fh)) {
    echo '.'; //there's more bytes, echo dot                                    
    if(++$i % 6 == 0) {
      echo "\n     "; //do not be too wide                                      
    }
  }
}
echo ";\n";
fclose($fh);
?>

答案 1 :(得分:2)

更好的是,在设置cookie或添加日志条目之后,您可以将调用重定向到实际图像(无论是gif / jpeg / etc),让网络服务器担心发送内容等:< / p>

header("Location: http://webserver.com/images/beacon.gif");