ビットマップの取り扱い – プログラミング – Home

ビットマップの取り扱い
 
通知
すべてクリア

ビットマップの取り扱い


みやちゃん
 みやちゃん
(@みやちゃん)
ゲスト
結合: 18年前
投稿: 1
Topic starter  

ビットマップの取り扱いはじめてです。
BITMAPファイル 1280×1024 0-255諧調 モノクロのピクセルデータを
読み、諧調の変更後にBITMAPファイルに0-255諧調 モノクロで書き込みたいの
ですが、確認すると変更時の画像になりません。
以下の内容書き込みしてます。

//カラーテーブルを取得。
hDC = GetDC(hwnd);
GetSystemPaletteEntries(hDC, 0, 256, pe);
for (int i = 0; i < 256; i++) {
lpInfo->bmiColors[i].rgbRed = pe[i].peRed;
lpInfo->bmiColors[i].rgbGreen =pe[i].peGreen;
lpInfo->bmiColors[i].rgbBlue =pe[i].peBlue;
lpInfo->bmiColors[i].rgbReserved = 0;
}
/* ビットマップのヘッダ作成 */
lpHead->bfType='M'*256+'B';
lpHead->bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
+dwLength*dwHeight;
lpHead->bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
+4*256;
lpInfo->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
lpInfo->bmiHeader.biWidth=dwWidth;
lpInfo->bmiHeader.biHeight=dwHeight;
lpInfo->bmiHeader.biPlanes=1;
lpInfo->bmiHeader.biBitCount=8;


引用解決済
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> 確認すると変更時の画像になりません。

で、どうなってんですか?

> GetSystemPaletteEntries(hDC, 0, 256, pe);

モノクロ(というか、階調を持つんだからグレースケールって言うべきだろうけど)な
のに、なんでシステムパレット使ってるんです?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

256階調のグレースケールと言うのは結局の話、グレースケールのパレットを持った
256色のビットマップと言う事です。
別に白黒2値と言う訳ではないので、256カラーのビットマップと別段変わるわけでも
ありません。単純な話で行けば、元のビットマップのパレットをグレースケール化するだ
けでも行けそうな気がします。
試していないので御自分で確認して見てください。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました