トップページ⇒tech
28コメント8KB

ビットマップのヘッダー情報について

■ このスレッドは過去ログ倉庫に格納されています
0001ぷー NGNG

C言語でビットマップを配列に格納して
処理したいのですがヘッダーをどう扱っていいのか
困っています。ヘッダー分ずらして格納して
後から出力のときにまた足して出力すれば
いいと思うのですが、
いったいビットマップは何バイトヘッダーが
あるのでしょうか?
また一般的にどのように配列に入れたらいいのでしょうか?
よろしくお願いします。
0002名無しさん@お腹いっぱい。 NGNG
なんていうかさ、こう、氏ねって感じ?
0003名無しさん@お腹いっぱい。 NGNG
>>1
ウェブ上にいろいろ転がっていると思うから検索してみればーー

>>2
氏ね なんて可哀想だよ
誰もが一度はとーる道だからね


0004名無しさん@お腹いっぱい。 NGNG
>1
ビットマップのフォーマットについてはちゃんと調べましたか?
0005ぷー NGNG
>3@`4さん
ありがとう御座います。
ビットマップのフォーマットですが
調べたのですが
BITMAPFILEHEADER 14バイト
BITMAPINFOHEADER 40バイト
で固定
パレット 色数により異なる
となっています。
ということは54バイト+パレットの各々のヘッダー
を除けばいいのですか?
またビットマップのヘッダーはどのように見るのでしょうか?


0006>1 NGNG
MSDNライブラリくらい入れとけよ
0007げろげ〜ろ NGNG
オレの予想、
1のロード/セーブした画像は
鏡に映して見ないと正しく表示されないでしょう。
0008名無しさん@お腹いっぱい。 NGNG
RGB が入れ替わってサイケな画像になる。5.00オーストラリアドル
0009名無しさん@お腹いっぱい。 NGNG
>>5
bz(バイナリエディタ)のstructure viewでも使えば。
0010バッカーです NGNG
なんで赤・緑・青・白・黒とかで1ドットだけのビットマップを
作ってみようとか思わないわけ?
そっちの方が不思議だよ>1
0011名無しさん@お腹いっぱい。 NGNG
パレットが絡むと長さ可変だから注意してね
0012名無しさん@お腹いっぱい。 NGNG
読みこむ時は良いんだけど
自分でビットマップファイルを0から作って見ようって事になって
4の倍数じゃないサイズを作った時に変な絵になって悩むに
一票
0013名無しさん@お腹いっぱい。 NGNG
1の「格納して処理」が、どんな処理なのか気になる。いわゆる画像処理かなぁ…
結局Get/SetPixel()使って処理することになる、に1票。
0014名無しさん@お腹いっぱい。 NGNG
もっとやさしく教えて。に一票。
0015名無しさん@お腹いっぱい。 NGNG
14はアホに一票
0016名無しさん@お腹いっぱい。 NGNG
単色(1Bit)、16色(4Bit)、256色(8Bit)、フルカラー(24Bit)
の4種類だっけ?
パレットが有るのは16色と256色。
0017きのこベンダー NGNG
>>16
フルカラーもパレットあるよ!
001816 NGNG
>17
フルカラーでパレットが必要なのってどんな場合?
パレット作らなくても表示出来たよん。
0019きのこベンダー NGNG
>>16
フルカラーはパレット無いですね。
でも、16bitはパレット無かったっけ?
0020名無しさん@お腹いっぱい。 NGNG
>>19
パレットサイズだけで最大2^16*6バイトも取られるのはイヤだ
ところで何きのこなの?ぶなしめじ?
0021名無しさん@お腹いっぱい。 NGNG
>19
.bmpで16bitか?
0022>5 NGNG
引用順序は前後します

>またビットマップのヘッダーはどのように見るのでしょうか?
「見る」とはどういう意味なのでしょうか?
存在するビットマップのヘッダ部分なら、バイナリエディターな
どを利用する事で「見る」ことができます。
ビットマップのフォーマットの資料と見比べて数値の意味を確認
してください。

>ということは54バイト+パレットの各々のヘッダー
>を除けばいいのですか?
プログラムを作ってみて、自分の期待通りの結果が選られましたか?
まず、できる事をやってみた後に「〜という結果を期待して〜と
いう処理をやったが、結果は〜という風になった。どこがおかし
いのか教えてほしい」といった質問を書いた方が、適切なアドバ
イスが得られると思います。
0023名無しさん@お腹いっぱい。 NGNG
16 は一応合ってるけど、19 は多分間違い。
ちなみにパレットを持つフルカラーBMPは(一応)作成可能ですが、
一般的には存在しません。
BMPファイルのフォーマットに関しては、ベクターに詳しい資料が
落ちているのでそちらを参照しては。
(内容が古いので、メンバの型等の仕様が今と異ってますが。)
0024きのこベンダー NGNG
>>23
フルカラーでパレットがホントにあるとは知らなかった。
16bitは圧縮BMPか何かで必要な分だけパレット持ってるんじゃないかと、
勘違いしてました。
0025名無しさん@お腹いっぱい。 NGNG
パレットはすべての色数(1@`4@`8@`16@`24@`32ビットカラー)でBMPファイルに含めることが許されている。

1@`4@`8ビットカラーではパレットが必須。
16@`24@`32ビットカラー時は減色などのためにオプションですな。
0026( ´∀`)さん NGNG
biBitCount = {0@` 1@` 4@` 8@` 16@` 24@` 32}
...あぁ、0ビットBMP...
最初見た時はあせったぞ。
0027名無しさん@お腹いっぱい。 NGNG
| BITMAPFILEHEADER | BITMAPINFOHEADER | (可変長)RGBQUAD * x |
〜以降 BITMAPINFOHEADER.biSizeImage 分のDATA〜

RGBQUADの部分は8bit以下ならパレット情報。(xはパレット数だけ存在)
16bit以上のBMPの場合、
BITMAPINFOHEADER.biCompression=BI_RGB(0)
の時は、RGBQUAD は無視して構わない。ただし、データ自体は
含むことが一応可能なので、BITMAPFILEHEADER.bfOffBits の値を見て
データ開始位置を出すようにしておく。16bit時のRGBフォーマットは 5:5:5。
BITMAPINFOHEADER.biCompression=BI_BITFIELDS(3)
の時はRGBQUADにRGBフォーマット情報を含む。(x=3)
一般にファイルから API 一発で読めるのを
期待出来るのは BI_RGB(0) の時だけ。
0028momus NGNG
BMPって、いつから16bitに対応したの?
こんなフォーマットでも進化してるのか。。
■ このスレッドは過去ログ倉庫に格納されています