モノクロビットマップが回転できない

[戻る]
あき529 2015/01/28(水) 21:45:44
モノクロビットマップを90度回転させ、ファイルに保存したいのですが、うまくいきま
せん、解決策をご存知でしたらご教授願えませんでしょうか?

ソースは下記となります。
test1.bmpが24ビットカラーの場合は正常に回転されたファイルが保存されますが、モノ
クロビットマップの場合、保存されたファイルを開くと真っ黒になります。
--------------------------------------------------------------------
CImage image1,image2;
POINT point[3];
image1.Load(_T("D:\\test1.bmp"));//元のビットマップファイル
image2.Create(image1.GetHeight(),image1.GetWidth(),image1.GetBPP());
point[0].x=image1.GetHeight();
point[0].y=0;
point[1].x=image1.GetHeight();
point[1].y=image1.GetWidth();
point[2].x=0;
point[2].y=0;
image1.PlgBlt(image2.GetDC(),point);
image2.Save(_T("D:\\test2.bmp"));//回転後のビットマップファイル
image2.ReleaseDC();
--------------------------------------------------------------------
環境はVS2012 OSはWin7です。よろしくお願いいたします。

gak 2015/01/31(土) 01:17:44
> クロビットマップの場合、...
256色以下の画像はピクセル情報+カラーテーブル情報で構成されるが、提示コードには
image1のカラーテーブル情報をimage2に反映する処理が抜けている。

gak 2015/01/31(土) 01:19:06
image1.GetColorTable で取得したカラーテーブル情報を
image2.SetColorTable で共有する必要があるかと。

> test1.bmpが24ビットカラーの場合は...
16Bit色以上の画像はカラーテーブル情報は持たずピクセル情報のみで構成される。
なのでカラーテーブル情報絡みの処理が無くてもいけていたのかと


#開発環境は無いので上記内容は全て推測です。験してません

gak 2015/01/31(土) 01:24:03
纏めて投稿したらスパムワード云々で弾かれたので、結果レスが分かれました。

「GetColorTable」を全角にしたら通った気もするのでこの辺りが原因?

あき529 2015/01/31(土) 11:26:59
[[解決]]
gakさん レスありがとうございます。
おっしゃるとおり、カラーテーブル情報に関する処理を追加しましたところ、正常に回転
したビットマップが保存されました。

> 256色以下の画像はピクセル情報+カラーテーブル情報で構成されるが
まったく把握しておりませんでした、勉強になりました。
ありがとうございました。

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