PHPには画像を出力する関数として、ImageJPEGやImageGIF, ImagePNGといった関数があります。名前からなんとなくわかるかもしれませんが、JPEGやGIF, PNGといったファイル形式毎に使う関数が違います。

INPUT TYPE=”FILE”のファイル送信用テキストボックスを用意しておくと、ブラウザからクライアントファイルを送信してもらうことができます。この中にMIMEタイプが含まれているので、それを保存しておき、後に要求があったら、MIMEタイプで処理を分けようと、MIMEタイプが”image/jpeg”ならImageJPEGを、”image/gif”ならImageGIFを、”image/png”ならImagePNGを呼ぶ実装をしていたのですが、1つ考慮がぬけていました。

“image/pjpeg”というMIMEタイプがあり、これが(プログラムで考慮が抜けていたので)画像と認識されませんでした。”image/jpeg”と”image/pjpeg”はImageJPEGを呼ぶとすることで解消しました。

JPEGにはプログレッシブJPEGという拡張仕様があり、Internet Exprolerではこれに”image/jpeg”ではなく”image/pjpeg”を割り当てるらしいです。SafariやFirefoxでは”image/jpeg”で送られていたので見落としてました。

#もしかして、インターレースGIFも違ったりするのだろうか・・


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です