5:5:5 or 5:6:5 ?
bmpでの話。
16bitカラーの場合、どっちかなんだけどこれがどっちなのか?
ってどこみるとわかるんだろ??ヘッダの情報の中にそういうのあったかなあ・・・。
16bitカラーを確認したいんだけど、Windowsでそういうツール、、、自分で作るしか?
RGB555とRGB565ですが。
コメントで寝ぼけたことを言ってますね、自分。
確かに5bitが6bitになる事自体はたいした問題ではないと思うんですけど、
よく考えたら、RGB555の場合は、
上位1bitを使わないでR:G:Bを表現してて、それが5:5:5なわけで。
仮に、RGB555のデータをそのままRGB565として使用したら、、、
んー、明らかにGの色がおかしくなりそうです。
ていうか、実際におかしかったです・・・orz
RGB555で検索(笑)したら、↓のようなソフトが。こういうの買ってくれると、きっと楽になるんだろうなあ・・・
組込機器開発用ビットマップ画像最適化ツールとしてのiMageStudio
MSDN(DirectX)によると…
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/bitmapinfoheaderstructure.asp
「16 bpp ビットマップで biCompression が BI_RGB と等しい場合、フォーマットは RGB 555 である。biCompression が BI_BITFIELDS と等しい場合、フォーマットは RGB 555 または RGB 565 である。AM_MEDIA_TYPE 構造体のサブタイプ GUID を使って特定の RGB タイプを調べる。」
とあります。
つまり、ファイル自体には555か565かの指定は無くて
どちらになるかはグラフィックボードに依存するのではないかと。
で、それを調べるにはDirectXのAPIを使えばわかるっぽいですね。(この辺は詳しくない…^^;)
Posted by りきぞ~ at 2007年4月10日 01:44 | 返信
りきぞ~さん、情報ども!
(いつもすまないねぇ・・・ごほごほ、なんちゃってw)
なるほどね、そういうもんなんですね。
まあ確かに、6ビットが5ビットになっても
人の目にはあまり関係なさそうだよねぇw
そうするとあれだなあ、あとはBigとLittleの関係か。
ありがとうございます^^
<DirectXのAPI
API、うん。
APIはいいねぇ・・・人の生み出した文化の極みだよ(違
Posted by あらやん at 2007年4月10日 09:02 | 返信
私も寝ぼけたこと書いてるような気がしてきました^^;
BMPファイルフォーマットとWindowsの表示モードを混同している・・・orz
さらににグラボがRGB555か565を調べるためにDirectXが必要、と書きましたが、
DescribePixelFormat
というAPIで普通に取得できるみたいです。
誤情報申し訳ない。m(_ _)m
ちなみにGが6ビットなのは、人間の目が緑に対して一番シビアに知覚できるからだとか。
>iMageStudio
リンク先の
「一般のグラフィックスツールで作成した画像データを組込機器のGUI画面で使用すると表示品質が低くなるという問題があります 」
とはどういう意味なんだろう…。
Posted by りきぞ~ at 2007年4月11日 23:58 | 返信
勝手に今回のまとめ(?)
BITMAPINFOHEADER構造体の
biBitCountメンバが16bppのとき、
biCompressionメンバがBI_RGBの場合はRGB555であり、
biCompressionメンバがBI_BITFIELDSの場合は
RGB555かRGB565のいずれかである。
ただ、いずれかと言われても、
RGBのビット位置が不明では正しいカラー情報を得られないので、
カラーマスク値を使って(ANDして)RGB値を取得する。
で、そのカラーマスクはどこにあるかと言うと、
カラーテーブルの先頭3つがカラーマスクになっている。
(赤・緑・青の順で)
…と、16bppのBMPファイルについてはそんなとこでしょうか。
実際に検証したわけじゃないので、真偽のほどは定かでは無いですが…。
BMPファイルってありふれてるんですけど、
調べてみると意外とややこしいんですよね(^^;
Posted by りきぞ~ at 2007年4月12日 00:52 | 返信