PHPで質問です。


getimagesizeやexif_read_dataは、引数としてファイル名を受け取りますが、なぜこのような仕様になっているのでしょうか?

getimagesize(file_get_contetns($filename)) のようなAPI設計にしなかった理由はなんでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/09 07:19:21
  • 終了:2011/12/16 07:20:02

回答(1件)

id:TransFreeBSD No.1

TransFreeBSD回答回数665ベストアンサー獲得回数2672011/12/09 12:37:18

完全な想像だけど回答で。
exif_read_dataはファイル名とか更新日時とかもあるし、最初からファイル前提の設計だったのでは?
確かにファイルハンドルやオブジェクトで扱えば柔軟性は上がりますが、それはそれで冗長だし、当時としては画像であれば基本的にファイルだしで、ファイル名を渡すのが一番シンプルという考え方もありでしょう。

id:DQNEO

ファイルシステムに依存するのがシンプルなのでしょうか?

HTTPで取得した画像を扱う場合、exif_read_dataに渡すためにはいったんローカルに保存しないといけないので、現行仕様の方が冗長かつ煩雑なんですよね・・・。

何でメモリ上の画像を処理するのに、いったんローカルに保存してファイル名を渡さなきゃいけないんだ、という疑問なのです。

exif_read_dataの中でopenしてるのが納得がいかなかったのです。
それが仕様だ、嫌なら使うなと言われればそれまでですけど。

2011/12/09 21:09:21
  • id:tdoi
    完全な想像なのでコメントで。

    先にfile_get_contentsをしてしまうと、画像データを全てメモリに読み込む必要があります。
    しかし、画像の属性データだけを取得したい場合は、ヘッダ領域を読めば済むことが多いため、その必要がないからではないかなぁと思います。
    巨大な画像だったりすれば、物理メモリの関係で、file_get_contentsを実行すると、色々と問題は起きるけれども、getimagesizeならできるということもあるかなと。
  • id:DQNEO
    * メモリ節約の観点から
    * 部分読み出しするため

    昔はメモリが高価だったので、その名残ということですかね。

    それなら納得が行きました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません