Save::Imageでのビットマップ保存

[戻る]
モア 2009/12/28(月) 15:19:14
Image::Saveでビットマップを保存した場合、bppはPC画面の解像度に依存するのでしょ
うか?

現在Save関数を利用してビットマップを保存しているのですが、biBitCountが「32」で
保存されてしまいます。
これを「1:モノクロ」で保存したい場合はやはり自分でビットマップヘッダーやビット
配列などを作成するしかないのでしょうか?

Save関数でbiBitCountの変更についてご存知の方がおられたらご教授お願いいたしま
す。

subaru 2009/12/28(月) 16:49:46
これはGDI+の話でしょうか。
保存時の色深度は保存形式には依存しますがPC画面の解像度や色深度には依存しません。
32bitで保存されるのならImageが32bitで作成されていたのでしょう。

32bitのビットマップをモノクロに変換するためには
PixelFormat1bppIndexedのフォーマットでビットマップを作成して
各ピクセルをコピーする必要があります。
GDI+のGraphicsオブジェクトにはパレットを持つビットマップを選択できないので
LockBitsして8ピクセルを1バイトにまとめてコピーするしかなく割と面倒です。

>これを「1:モノクロ」で保存したい場合はやはり自分でビットマップヘッダーやビット
>配列などを作成するしかないのでしょうか?

GDIと組み合わせてやるならビットマップヘッダーを作成することになるし
GDI+のままやるならビット配列を作成することになりそうです。

モア 2010/01/08(金) 12:02:43
[[解決]]
ご回答ありがとうございました。
質問に対しての回答は得られたので解決とさせていただきます。

古いスレッドには追加発言できません。