例えば、HTMLメールの開封チェックがしたいとか、アクセス解析がしたいとか、まあ色々と理由はあると思いますが1x1の透過gif画像をプログラムから出力したいってのは稀にあります。
そういえば、その昔はCSSを使わないで1x1画像でWebのレイアウトを組んでいたりいなかったりしてましたね。

PHPで画像を出力する方法はいくつかありますが普通に思いつくのはサーバー上の画像を読み込んで出力です。
でも、画像を用意したり、画像までのパスを書いたりで案外めんどくさいんですよね。

mb_http_output("pass");
header("Content-type: image/gif");
$file = '1x1.gif';
$fp = fopen($file,'r');
$gifdata = fread($fp,filesize($file));
fclose($fp);
print $gifdata;

つぎはちょいとひねってimage関数を使って出力してみます。でも、GDが必要になっちゃいますしなんか無駄なことをしている気が・・・・


mb_http_output("pass");
header("Content-type: image/gif");
$img = imagecreate(1, 1);
$color = imagecolorallocate($img,0,0,0);
imagecolortransparent($img,$color);
imagegif($img);

最後に一番簡単かなと思う方法です。あらかじめBase64でエンコードしておいた文字列をデコードして出力します。

mb_http_output("pass");
header("Content-type: image/gif");
print base64_decode('R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');

※作成から6年前(2339日経過)の記事です。内容が古い可能性があります。
東京都東日本橋の株式会社プレスマンPRESSMAN*Tech