モノクロビットマップが回転できない – プログラミング – Home

モノクロビットマップが回転できない
 
通知
すべてクリア

[解決済] モノクロビットマップが回転できない


あき529
 あき529
(@あき529)
ゲスト
結合: 11年前
投稿: 4
Topic starter  

モノクロビットマップを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
 gak
(@gak)
ゲスト
結合: 21年前
投稿: 132
 

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


返信引用
gak
 gak
(@gak)
ゲスト
結合: 21年前
投稿: 132
 

image1.GetColorTable で取得したカラーテーブル情報を
image2.SetColorTable で共有する必要があるかと。

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

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


返信引用
gak
 gak
(@gak)
ゲスト
結合: 21年前
投稿: 132
 

纏めて投稿したらスパムワード云々で弾かれたので、結果レスが分かれました。

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


返信引用
あき529
 あき529
(@あき529)
ゲスト
結合: 11年前
投稿: 4
Topic starter  

gakさん レスありがとうございます。
おっしゃるとおり、カラーテーブル情報に関する処理を追加しましたところ、正常に回転
したビットマップが保存されました。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました