en.gはwebサイト制作に関する技術的な情報を発信するサイトです。

【PHP】 header関数で画像を出力する

phpはheader関数を利用して画像の出力を行うことができます。用途は様々ですが、例えばドキュメントルート外の画像を表示させる場合などに利用できます(サーバーの設定に依存します)。

phpで画像を出力するサンプルコード

header関数でMIMEタイプを指定して対象ファイルを指定します。対象ファイルがJPEGの場合は以下のサンプルコードのようになります。ファイルパスはそれぞれの環境によって変更してください。


header("Content-Type: image/jpeg");
readfile("var/www/exampledomain/examplefilename.jpg");

							

お勉強用

順を追って説明していきます。

1.header関数を使用してHTTPヘッダでMIMEタイプを指定する

header関数を使用してこのアクセスがJPEGの画像であることを指定しています。

2.strtotimeとarray_mapで「日付」として認識できるようにタイムスタンプ形式に変換する

readfile関数は指定したファイルの内容を出力することができる関数です。画像ファイルを対象とすることでブラウザに表示することができます。htmlのimgタグは対象画像を読み込みますが、readfileは対象ファイルを出力するという違いがあります。

応用編、MIMEタイプとファイルパスの動的な処理に対応する

大抵の場合、汎用的な利用を求められるはずなので、MIMEタイプとファイルパスが動的に処理されるようなコードをご紹介します。

mime_content_type関数でMIME Content-type を検出する

どの画像タイプにも対応できるように、mime_content_type関数で対象のファイルのMIMEタイプを検出できるようにします。


mime_content_type(imagepath)

							

画像ファイル出力の利点

phpで画像ファイルを出力する利点は、画像を読み込むのではなくphpファイルから出力するところにあります。例えばimgタグのsrc要素に設定しアクセスするユーザーの環境によって画像を制御したりもできます。アクセスできるIPの制御などもできますね。