- 締切済み
[Win32API]JpegをDIBに変換する
お世話になっています。 C+Win32APIでVC++6.0を使用してプログラムを作成しています。 質問はタイトルの通りです。 Jpegファイルの読み込みにはOleLoadPicture()を使用していましたが、DIBへの変換には一回裏画面に描画してGetPixelでデータを拾う程度しか思い当たりません。 できれば外部ライブラリなどを使わずに解決したいと思っているのですが、よい方法がなかなか見当たりません。 ご存知の方、ご教授いただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★参考文献 ・下のリンクを参考にして下さい。 ・http://www.sm.rim.or.jp/~shishido/graphics.html→『DIB/Waveとグラフィック・音声処理実験室』 ・http://www.sm.rim.or.jp/~shishido/windows.html→『Windowsプログラミング研究室』 関連: ・http://oshiete1.goo.ne.jp/qa2662290.html→『画像処理のプログラミングを勉強したい!』回答者 No.3 ・http://oshiete1.goo.ne.jp/qa2643801.html→『C言語等での画像処理の勉強方法』回答者 No.3 ・以上。おわり。
その裏画面(メモリDCとメモリビットマップの事?)のビットマップをCreateDIBSectionなどで作成すれば、ピクセルを直接読み書き出来ます。 メモリビットマップに一度描画してから取得するという考え方はあっています。
- tettsu
- ベストアンサー率30% (4/13)
BitBltを使えば簡単にできます。 以下手順です。 1.適当なウインドウからDCを取得します。(私はデスクトップウインドウを使いました) 2.取得したDCと互換のDCをCreateCompatibleDCを使って2つ作成。 3.1つ目の互換DCにOleLoadPictureで読み込んだビットマップを関連付ける 4.DIBビットマップを作成して、2つ目の互換DCに関連付ける 5.BitBltでDIBビットマップにコピーする
お礼
早速の回答ありがとうございます。 しかし、当方DIBビットマップに関しては理解不足なもので、4番の意味がよく解りません。 最終的に、RGBデータをBYTE型の配列で管理したいのですが、再度ご教授いただけるでしょうか。