GD および Image 関数
PHP Manual

getimagesize

(PHP 4, PHP 5, PHP 7)

getimagesize — 画像の大きさを取得する

説明

array getimagesize ( string $filename [, array &$imageinfo ] )

getimagesize() 関数は、サポートする任意の形式の画像ファイルの大きさを決定し、 ファイルの型と高さ/幅を表す文字列を返します。これらは HTML の IMG タグや HTTP の content type として使用できます。

getimagesize() は、 imageinfo パラメータで追加情報を返します。

注意: JPC と JP2 は異なるビット深度のコンポーネントを含むことが可能なことに 注意してください。この場合 "bits" に対する値は、 最も大きい深度になります。また、JP2 ファイルは 複数の JPEG 2000 コードストリームを含む場合があります。この場合、 getimagesize() はファイルのルートから 最初に遭遇するコードストリームに対する値を返します。

注意: アイコンに関する情報は、ビットレートが最大のアイコンから取得します。

パラメータ

filename

このパラメータは、情報を取得したいファイルの名前を指定します。 ローカルファイルへの参照、あるいは (設定で許可されているなら) ストリームを用いたリモートファイルへの参照を指定できます。

imageinfo

オプションのパラメータで、 画像ファイルから何らかの拡張情報を引き出すことが可能です。 現在、この変数にはJPGファイルについて 異なった複数のAPPマーカーが連想配列として返されます。いくつかのプログラムは、 これらのAPPマーカーを画像の中の埋込テキストの情報として使用します。 最も一般的な例は、マーカーAPPl3に埋込IPTC » http://www.iptc.org/情報が返されることです。 バイナリ形式のマーカーAPP13を読むことができるよう処理するために iptcparse() 関数を使用することができます。

返り値

最大 7 つの要素からなる配列を返します。画像の形式によっては、 channels や bits は含まれないことがあります。

0 番目および 1 番目の要素は、それぞれ画像の幅と高さを表します。

注意:

形式によっては、画像を含まないものや複数の画像を含むものがあります。 これらの場合、getimagesize() は画像のサイズを適切に決定することができません。このような場合、 getimagesize() が返す幅と高さはいずれもゼロとなります。

2 番目の要素は IMAGETYPE_XXX constants 定数のひとつで、 画像の形式を表します。

3 番目の要素は IMG タグで直接利用できる文字列 height="yyy" width="xxx" です。

mimeは画像のMIMEタイプに一致します。この情報は 画像とともに正しい HTTP Content-type ヘッダを転送するために使用できます。

例1 getimagesize() および MIME 型

<?php
$size 
= getimagesize($filename);
$fp = fopen($filename, "rb");
if (
$size && $fp) {
    
header("Content-type: {$size['mime']}");
    
fpassthru($fp);
    exit;
} else {
    
// エラー
}
?>

channels は RGB 画像の場合に 3、CMYK 画像の場合に 4 です。

bits は個々の色のビット数です。

画像の形式によっては、channels や bits の値の存在は混乱の元です。 たとえば、GIF は常に 1 ピクセルあたり 3 チャンネルを使用しますが、グローバルカラーテーブルを使ったアニメーション GIF のピクセルあたりのビット数を計算することはできません。

失敗した場合には FALSE を返します。

エラー / 例外

もし filename のイメージにアクセスできない場合、 getimagesize() は FALSE を返し、E_WARNING レベルのエラーを発生させます。 読み込み時にエラーが発生した場合は、 getimagesize() は E_NOTICE レベルのエラーを発生させます。

変更履歴

バージョン 説明
7.1.0 WebP に対応しました。
5.3.0 アイコンに対応しました。
5.2.3 読み込み時にエラーが発生した場合のエラーレベルが、 E_WARNING から E_NOTICE に変わりました。
4.3.2 JPC, JP2, JPX, JB2, XBM, WBMP のサポートが追加されました。
4.3.2 imageinfo パラメータで JPEG 2000 のサポートが追加されました。
4.3.0 bits と channels が他の画像形式でも使用できるようになりました。
4.3.0 SWC および IFF のサポートが追加されました。
4.2.0 TIFF のサポートが追加されました。
4.0.6 BMP および PSD のサポートが追加されました。

例

例2 getimagesize() の例

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo 
"<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>

例3 getimagesize (URL)

<?php
$size 
= getimagesize("http://www.example.com/gifs/logo.gif");

// ファイル名にスペースが含まれる場合は適切にエンコードしてください
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

例4 IPTC を返す getimagesize()

<?php
$size 
= getimagesize("testimg.jpg", $info);
if (isset(
$info["APP13"])) {
    
$iptc = iptcparse($info["APP13"]);
    
var_dump($iptc);
}
?>

注意

注意:

この関数は、GD 画像ライブラリを必要としません。

注意:

この関数は、filename が適切な画像ファイルであることを想定しています。 画像以外のファイルを渡してもそれを画像だと判断してしまい、関数の処理は成功するでしょう。

getimagesize() を使って、そのファイルが画像であるかどうかを確かめることはできません。 そのようなことをしたい場合は、そのために用意されたソリューション (Fileinfo 拡張モジュールなど) を使いましょう。

参考


GD および Image 関数
PHP Manual