- 締切済み
Bitmapの「biBitCount」の変更について
ビットマップファイルのヘッダにある 「biBitCount(1 画素あたりのデータサイズ (bit))」 についてですが、 「24 - 1677万色(true color)ビットマップ」のファイルを 「1 - 2 色ビットマップ」 に変更する関数などはないでしょうか? GDI+等に関数がありそうだと思ったのですが見つからず・・・。 もしご存知の方がおられたらご教授お願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fioletti
- ベストアンサー率0% (0/2)
すみません。さきほどの回答はすこし勘違いしていて、メモリ上に読み込んだイメージのGDI的な変換方法を書いてしまいました。 ご質問をよく読むとファイル→ファイルのようなので、いろいろやり方はあると思うのですが、私の場合IPictureで処理します。 イメージがはっきりとはなかったので、そして現在UNIX環境から書き込んでいるのでヘッダとかが見られず、ググりながら流れを考えました。不正確でしたら申し訳ないです。 1.OleCreatePictureIndirect で単色ビットマップをもつIPicture実装オブジェクトを作る。 2.OLELoadPictureでカラーのIPicture実装オブジェクトを作る。 3.単色のIPictureのget_CurDCで取得したDCに対して、カラーのIPictureのRenderでイメージを転送(このときに変換が起こる)。 4.単色のIPictureのSaveAsFileを呼んでファイルに保存する。 IPictureの定義は下記URLにありました。(ヘッダがあるならそれを見た方が早いです) 何年か前ならググると情報も豊富にありMSDNにも普通に定義があったのですが現在はかなり探しにくくなっているようです。
- fioletti
- ベストアンサー率0% (0/2)
もう何年もやってないので間違っていたら申し訳ないのですが、 GDIのCreateBitmapで作ったビットマップをSelectObjectして、 HDCに対してBitbltしてやるのだと思います。
補足
ご回答ありがとうございます。 上記手順のどのタイミングでモノクロ画像に変更出来るのでしょうか? お手数ですがお願いいたしますm(__)m