Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

1x1の透過gif画像を簡単に出力しよう

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

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

<?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が必要になっちゃいますしなんか無駄なことをしている気が・・・・

<?php
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でエンコードしておいた文字列をデコードして出力します。

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