PHP マニュアル
前のページ |  | 次のページ

# getimagesize

(PHP 3, PHP 4 , PHP 5)

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

## 説明

array getimagesize ( string filename [, array imageinfo])

getimagesize()関数は任意のGIF,JPG, PNG,SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP ファイルの大きさを定義し、 ファイルの型と HTML<IMG> タグ中で通常使用される高さと幅からなる寸法を表す文字列を返します。

> 注意: JPC, JP2, JPX, JB2, XBM, WBMPは PHP 4.3.2以降でサポートされます。 SWCはPHP 4.3.0以降でサポートされます。

返り値は、4つの要素からなる配列です。0番目の要素は、ピクセル単位 での画像の幅です。1番目の要素は高さです。2番目の要素は画像の種類を 示すフラグです。1 = GIF, 2 = JPG, 3 =PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM です。これらの値はPHP4.3以降で定義されるIMAGETYPE定数に対応します。 3番目の要素はIMGタグで直接利用できる文字列 "height=xxx width=xxx" です。

例 1. getimagesize (ファイル)

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

例 2. getimagesize (URL)

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

JPG画像では `channels`と`bits`の二つの拡張項目が返されます。 `channels`はRGB画像の場合に3、CMYK画像の場合に4です。 `bits`はカラーの数です。

PHP4.3以降、`bits`と`channels`は 他の画像形式に対しても提供されます。しかし、これらの値の存在はちょっと 混乱気味です。例えば、GIFは常に1ピクセルあたり3チャンネル を使用しますが、グローバルカラーテーブルを使ったアニメーションGIFの ピクセルあたりのビット数を計算することはできません。

いくつかの画像フォーマットは画像を含まないこともできるし、また複数の画像を 含むこともできます。そうした場合には、getimagesize()は 画像サイズを正しく認識できず、幅と高さについてはゼロを返します。

PHP4.3以降、getimagesize()は追加パラメータを返します。 `mime`は画像のMIMEタイプに一致します。この情報は 画像とともに正しいHTTP Content-Typeヘッダを転送するために使用できます。

例 3. getimagesize()とMIMEタイプ

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

`filename`に指定された画像にアクセスできない場合や あるいは正しい画像ではない場合、getimagesize()は `FALSE`を返しwarningを発行します。

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

例 4. IPTC を返す getimagesize

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

> 注意: JPEG 2000 support was added in PHP 4.3.2. Note that JPC and JP2 are capable of having components with different bit depths. In this case, the value for "bits" is the highest bit depth encountered. Also, JP2 files may contain multiple JPEG 2000 codestreams. In this case, getimagesize() returns the values for the first codestream it encounters in the root of the file.

> 注意: TIFFサポートはPHP 4.2 で追加されました。

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

> image_type_to_mime_type(), exif_imagetype(), exif_read_data() exif_thumbnail()も参照してください。

> URLのサポートは PHP 4.0.5. で追加されました。

前のページ | ホーム | 次のページ
gd_info | 上に戻る | image_type_to_extension