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, もしくは WBMP ファイルの大きさを定義し、 ファイルの型と HTML <IMG> タグ中で通常使用される高さと幅からなる寸法を表す文字列を返します。

もし filename のイメージにアクセスできない場合、 もしくは有効な画像でない場合、getimagesize()FALSE を返し、E_WARNING レベルのエラーを発生させます。

注意: JPC, JP2, JPX, JB2, XBM, WBMPは PHP 4.3.2以降でサポートされます。 SWCはPHP 4.3.0以降でサポートされます。 TIFF のサポートは、PHP 4.2.0 で追加されました。

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

返り値は、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.0以降で定義される 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画像では channelsbitsの二つの拡張項目が返されます。 channelsはRGB画像の場合に3、CMYK画像の場合に4です。 bitsはカラーの数です。

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

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

PHP4.3.0以降、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 {
  
// エラー
}
?>

オプションの 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);
}
?>

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