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

# exif_read_data

(PHP 4 >= 4.2.0)

exif_read_data -- JPEGまたはTIFFから EXIFヘッダを読みこむ

## 説明

array exif_read_data ( string filename [, string sections [, bool arrays [, bool thumbnail]]])

関数exif_read_data()はJPEGまたはTIFFイメージファ イルからEXIFヘッダを読みこみます。この関数は、キーがヘッダ名、値 がヘッダに関連するの値となる連想配列を返します。返すデータがない 場合、`FALSE`が返されます。

`filename`は読みこむファイル名です。これは、 URLとして使用することはできません。

`sections`は、結果の配列を生成する際に含める カンマ区切りのセクションのリストです。

FILE | FileName, FileSize, FileDateTime, SectionsFound
COMPUTED | html, Width, Height, IsColor 及び他の取得可能なもの
ANY_TAG | タグを有する全ての情報 例えば、IFD0, EXIF, ...
IFD0 | IFD0の全てのタグ付きのデータ。通常のイメージファイルで は、これにはイメージサイズが含まれます。
THUMBNAIL | 2番目のIFDがある場合にファイルにサムネイルが含まれている可能 性があります。埋め込まれているサムネイルに関する全てのタグ付 きの情報はこのセクションに保存されています。
COMMENT | JPEGイメージのコメントヘッダ。
EXIF | EXIFセクションは、IFD0のサブセクションです。このセクションに は、イメージに関するより詳細な情報が含まれています。これらの エントリの多くはデジタルカメラに関するものです。

`arrays`は、各セクションを配列とするかどうか を指定します。セクションFILE、 COMPUTED、THUMBNAILは、 常に配列となります。これは、これらのセクションに含まれる値の名前 が他のセクションと衝突するためです。

`thumbnail`は、サムネイルのタグ付きのデータ だけでなく、サムネイル本体を読みこむかどうかを指定します。

> 注意 Exifヘッダはデジタルカメラにより生成されたJPEG/TIFFイメージで使 用される傾向がありますが、残念なことに、各デジタルカメラメーカー は、個々のイメージに関するタグ付けの方法について異なった考えを持っ ており、特定のExifヘッダの存在を仮定することはできません。

例 1exif_read_data()の例
    <?php
    echo "test1.jpg:<br>\n";
    $exif = exif_read_data ('tests/test1.jpg','IFD0');
    echo $exif===false ? "No header data found.<br>\n" : "Image contains headers<br>";
    $exif = exif_read_data ('tests/test2.jpg',0,true);
    echo "test2.jpg:<br>\n";
    foreach($exif as $key=>$section) {
        foreach($section as $name=>$val) {
            echo "$key.$name: $val<br>\n";
        }
    }?>
最初のコールは、失敗します。これは、イメージがヘッダ情報を有していないためです。
    test1.jpg:
    No header data found.
    test2.jpg:
    FILE.FileName: test2.jpg
    FILE.FileDateTime: 1017666176
    FILE.FileSize: 1240
    FILE.FileType: 2
    FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT
    COMPUTED.html: width="1" height="1"
    COMPUTED.Height: 1
    COMPUTED.Width: 1
    COMPUTED.IsColor: 1
    COMPUTED.ByteOrderMotorola: 1
    COMPUTED.UserComment: Exif test image.
    COMPUTED.UserCommentEncoding: ASCII
    COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.
    COMPUTED.Copyright.Photographer: Photo (c) M.Boerger
    COMPUTED.Copyright.Editor: Edited by M.Boerger.
    IFD0.Copyright: Photo (c) M.Boerger
    IFD0.UserComment: ASCII
    THUMBNAIL.JPEGInterchangeFormat: 134
    THUMBNAIL.JPEGInterchangeFormatLength: 523
    COMMENT.0: Comment #1.
    COMMENT.1: Comment #2.
    COMMENT.2: Comment #3end

> 注意 イメージに何らかのIFDOデータが含まれている場合、COMPUTEDにはエン トリByteOrderMotorolaが含まれます。このエントリは、バイトオーダ がリトルインディアン(インテル)の場合に0、ビッグインディアン(モト ローラ)の場合に1となります。これは、PHP 4.3で追加されました。

> ExifヘッダにCopyrightが含まれる場合、これには2つの値が含まれる可 能性があります。これはExif 2.10の規約に沿っていないため、 COMPUTEDセクションは、エントリ Copyright.Photographerおよび Copyright.Editor をともに返しますが、 IFD0セクションには両方のエントリをNULL文字で分割した型式のバイト 配列が含まれます。さもなくば、(Exifのデフォルト処理に基づき)デー タ型式に誤りがあるとして最初のエントリのみを返します。 COMPUTEDには、エントリCopyrightも含まれます。 これは、元のcopyright文字列またはphotoおよびeditor copyrightのカ ンマ区切りのリストとなります。

> 注意 UserCommentタグにはCopyrightタグと同様の問題があります。 このタグには2つの値を保存する可能性があり、この場合、使用される エンコーディングが最初に、値自体が2番目にきます。この場合、IFDセ クションにはエンコーディングまたはバイト配列のみが含まれます。 COMPUTEDセクションには、エントリ UserCommentEncodingと UserCommentの両方を保存します。 エントリUserCommentはどちらの場合でも取得可 能です。このため、FD0セクションの値の識別に使用されます。

> ユーザコメントがUnicodeまたはJISエンコーディングを使用しており、 モジュールmbstringが利用できる場合、このエンコーディングはexifの 初期設定に基づき自動的に変更されます。この機能は、PHP 4.3で追加 されました。

> 注意 Height と Width は、getimagesize()と同じ方法 で計算されます。このため、これらの値はヘッダの一部として返す際に 使用するべきではありません。また、htmlは通常の HTMLで使用されるheight/widthテキスト文字列です。

> 注意 PHP 4.3以降、この関数は配列を含む埋めこまれた IFDデータを全て読むことが可能となっています。 また、埋めこみのサムネイルの大きさもサブ配列 THUMBNAILに返されます。 関数exif_read_data()はTIFF 型式のサムネイルを返すことが可能です。 最後に返り値の(メモリリミットに達するまでではない)最大長はもはや ないことを追記しておきます。

> 注意 この関数は、`--enable-exif`を指 定してPHP 4をコンパイルした場合のみ使用可能です。この機能と動作 は、PHP 4.2で変更されています。これより以前のバージョンは非常に 不安定です。

> PHP 4.3以降、`--enable-mbstring`を指定してPHP 4がコ ンパイルされている場合、ユーザコメントのエンコーディングは自動 的に変換されます。

> この関数は、GDイメージライブラリを必要としません。

> exif_thumbnail() および getimagesize()も参照ください。

前のページ | ホーム | 次のページ
exif_imagetype | 上に戻る | exif_thumbnail