PHP で BMP ファイルを読む
PHP には GD という画像を扱うためのエクステンションがあり、使用可能なサーバも少なくない。 サポート形式も JPEG / GIF / PNG など Web 上でメジャーな画像形式には一通り対応しているので困ることはないのだが、案外 BMP ファイルが読めなかったりする。 パソコンに詳しくない人が使うサービスなんかだと BMP ファイルが使えると嬉しいことも多いだろう。 ググッても案外思ったほどちゃんと対応しているコードは多くないようで、RLE圧縮非対応だったり、16bitカラー非対応だったり、特殊なビットフィールドに対応できていなかったりなどなど。 (試してないけど)真面目に対応したいんだったら ImageMagick などを使えばいいという話もあるので PHP で書かなければいけない理由はそんなにないものの、GD だけで手軽に済ませたいこともしばしばあるので真面目に書いてみた。 https://bitbucket.org/oov/php-bmp/src 1bit / 4bit / 8bit / 16bit / 24bit / 32bit RLE圧縮 ビットフィールドフリー BI_JPEG / BI_PNG も読める 透過情報も上手く読み込める 恐らく PHP 5.1.0 以降で動くんじゃなかろうか テスト用画像としては自分で作ったデータの他、 こちらで配布されているデータ も利用した。 追記: よく見たら bmp対応コードが既にあるっぽい ので将来的にはどこのサーバでも bmp が読めるようになりそう。と、思ったら PHP の GD エクステンションのヘッダ みると、webp はサポートしようとしてるけど bmp の気配はない……ぐぬぬ。