モノクロビットマップを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です。よろしくお願いいたします。
> クロビットマップの場合、...
256色以下の画像はピクセル情報+カラーテーブル情報で構成されるが、提示コードには
image1のカラーテーブル情報をimage2に反映する処理が抜けている。
image1.GetColorTable で取得したカラーテーブル情報を
image2.SetColorTable で共有する必要があるかと。
> test1.bmpが24ビットカラーの場合は...
16Bit色以上の画像はカラーテーブル情報は持たずピクセル情報のみで構成される。
なのでカラーテーブル情報絡みの処理が無くてもいけていたのかと
#開発環境は無いので上記内容は全て推測です。験してません
纏めて投稿したらスパムワード云々で弾かれたので、結果レスが分かれました。
「GetColorTable」を全角にしたら通った気もするのでこの辺りが原因?
gakさん レスありがとうございます。
おっしゃるとおり、カラーテーブル情報に関する処理を追加しましたところ、正常に回転
したビットマップが保存されました。
> 256色以下の画像はピクセル情報+カラーテーブル情報で構成されるが
まったく把握しておりませんでした、勉強になりました。
ありがとうございました。