GD および Image 関数
PHP Manual

getimagesize

(PHP 4, PHP 5, PHP 7)

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

説明

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

getimagesize() 関数は、サポートする任意の形式の画像ファイルの大きさを決定し、 ファイルの型と高さ/幅を表す文字列を返します。これらは HTMLIMG タグや 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 つの要素からなる配列を返します。画像の形式によっては、 channelsbits は含まれないことがあります。

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 は個々の色のビット数です。

画像の形式によっては、channelsbits の値の存在は混乱の元です。 たとえば、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 bitschannels が他の画像形式でも使用できるようになりました。
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