プロが教える店舗&オフィスのセキュリティ対策術

ビットマップを白黒にしたいのですが、どうすればよいか迷っています。

getpixel()関数で色を取って、RGBに分解して、足して3で割って、さらにRGB(c,c,c)とかいう風にすれば、求まるかなと考えたんですが、非常に効率が悪そうなので、どなたかよい方法教えてもらえないでしょうか?
おねがいします。

RGBに分解と書きましたが、実際のところどうやって分解すればいいのかなと、そのあたりもよくわかってないので、分解の方法を知っている方がいたらそちらのほうもお願いします。

A 回答 (3件)

MSDN Libraryをお持ちなら


[サポート技術情報]→[Knowledge Base]→[Win32 Software Deveropment Kit]→[Converting Colors Between RGB and HLS (HBS)]
という項目があります。

HLSカラースペースのLが「明度」なのでソースが参考になると思います。

COLORREF GetPixel(
HDC hdc, // handle to device context
int XPos, // x-coordinate of pixel
int nYPos // y-coordinate of pixel);
こちらのGetPixel()は0x00bbggrr形式の32ビットRGB値を返します。
    • good
    • 0
この回答へのお礼

御礼が遅くなりまして、すみません。
いまから、libraryを見てみようと思います。
ありがとうございました。

お礼日時:2002/10/04 13:33

そこまで色の操作をするならばDIBがベストではないでしょうか。


ビットマップファイルなら扱いも簡単ですし。

ともあれ、参照URLにとっても詳しい説明がありますよ。
「明るさ=R×0.30+G×0.59+B×0.11」
だそうです。

DirectXの関数一つである意味終わるお話だと思いますけど、この辺は自分で作った方が楽しいですよね。
慣れたらCPUのキャッシュサイズを考慮したソースを作れば、処理速度もかなり改善されますよ。

参考URL:http://www.sm.rim.or.jp/~shishido/
    • good
    • 0
この回答へのお礼

よいページを紹介していただいてありがとうございます。
さっそく、「明るさ=R×0.30+G×0.59+B×0.11」 をプログラムに取り入れたいと思います。

お礼日時:2002/10/04 13:33

名前を付けて保存を選んでモノクロビットマップを選択したら白黒にならないですか?


そんな事じゃだめですかね?(笑)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!