2009-05-14 15 views
2

多少の複雑なファイルには、特に圧縮されていないビットマップファイル(.BMP)が含まれていますが、Pythonでどのように解凍しますか?
「BM」タグをスキャンし、次のバイトがBMPヘッダーに「似ている」かどうかを確認します。ファイルからビットマップを抽出する

+0

回答があるときに質問をする理由は何ですか? – shoosh

+1

はい、他のファイルのバイトを実際に読み取ることなく、他のファイルに埋め込まれたビットマップを魔法のように探し出す別のアルゴリズムがあります。悲しいことに、それは名前を付けることができない会社のプロプライエタリな製品です。冗談だ。質問は何ですか? –

+0

私はおそらく、すでにそれを行ったツール/ライブラリがあったかもしれないから尋ねました。とにかく、可能な答えが1つしかないので、誰かが私の質問をd​​ownvoteしましたか?私たちは最初に自分で解決策を探すことなく「スタックオーバーフローでそれを聞いてください」と言いますか? :D – Joril

答えて

4

私はPython Imaging Library PILを使用し、データを取得します。それが解析できれば、それは有効な画像です。例外をスローすると、例外はスローされません。

画像の先頭を検索する必要があります。運がよければ、画像リーダーは画像データの後のゴミを無視します。そうでない場合は、バイナリ検索を使用して画像の終わりを探します。

+0

しかし、ファイルに画像の横に他のものが含まれている場合はどうなりますか?それを抽出することができますか?また、それを検索する必要があります。 – Geo

4

「BM」マーカーのファイルを検索し、BITMAPFILEHEADERとそれに対応するBITMAPINFOに次のデータを引き出し、その値が有効であるかどうかを確認します(つまり、色の深さは合理的であるなど)。

妥当であると思われるものを見つけたら、そのデータを取り出して別の回答に記載されているライブラリに渡します。

関連する問題