php 直接输出图片
2013年1月10日
没有评论
前段时间看 google analytics 移动版,发现可以直接通过php来输出一个1×1像素的图片。以前的我的做法是php中执行了处理逻辑后,然后通过header 进行一个 302 转跳到一个已有的图片上,看来是多此一举了。下面是图片输出的示例代码:
<?php
function writeGifData() {
$GIF_DATA = array(
chr(0x47),chr(0x49),chr(0x46),chr(0x38),chr(0x39),chr(0x61),
chr(0x01),chr(0x00),chr(0x01),chr(0x00),chr(0x80),chr(0xff),
chr(0x00),chr(0xff),chr(0xff),chr(0xff),chr(0x00),chr(0x00),
chr(0x00),chr(0x2c),chr(0x00),chr(0x00),chr(0x00),chr(0x00),
chr(0x01),chr(0x00),chr(0x01),chr(0x00),chr(0x00),chr(0x02),
chr(0x02),chr(0x44),chr(0x01),chr(0x00),chr(0x3b)
);
header("Content-Type: image/gif");
header("Cache-Control: " . "private, no-cache, no-cache=Set-Cookie, proxy-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 17 Sep 1975 21:32:10 GMT");
echo join($GIF_DATA);
exit;
}
writeGifData();
?>
受到启示,也可以通过下面的方式来输出图片
<?php
function writeGifData() {
//服务器图片真实路径
$file = dirname(__FILE__) . '/1x1.gif';
readfile($file);
exit;
}
writeGifData();
?>
另外,如果觉得.php作为图片的扩展名不好看,可以在服务器上通过urlrewrite来改造一下,这样用户看到的是图片扩展名,但是服务器真是处理的是一个php脚本,既然是php脚本,就可以做很多其他的事,这种方式在网站统计、广告系统等广泛应用。
