- PR -

色変換後のbmpファイルの保存

1
投稿者投稿内容
ミズー
会議室デビュー日: 2006/10/25
投稿数: 8
投稿日時: 2006-12-26 10:57
.netの初心者で,わかりにくい文章になりますが,教えてください。
私がやろうとしていることは,Windows ApplicationでBMPファイルの色を変換してpictureBoxに表示し,さらにボタンをクリックすることにより,ファイル保存をするツールを作ろうと思っています。

 インターネットで探したところ,ColorMapオブジェクトとImageAttributesのSetRemapTableメソッドを使って描画することは出来たのですが,色を変換したものを保存することが出来ません。
コードは以下のようにになります。
〜〜〜

Graphics g = pictureBox1.CreateGraphics();

//画像取得
Bitmap img = new Bitmap(listBox1.Text);

//ColorMapオブジェクトの配列を作成
System.Drawing.Imaging.ColorMap[] cms =
new System.Drawing.Imaging.ColorMap[]
{
new System.Drawing.Imaging.ColorMap()
};

//黄を白に変換
cms[0].OldColor = Color.FromArgb(255,255,0);
cms[0].NewColor = Color.FromArgb(255,255,255);

//ImageAttributesオブジェクトの作成
System.Drawing.Imaging.ImageAttributes ia =
new System.Drawing.Imaging.ImageAttributes();
//ColorMapを設定
ia.SetRemapTable(cms);

//画像表示(変換前)
g.DrawImage(img, new Rectangle(0, 0,200,200));
//色を画像(変換後)
g.DrawImage(img, new Rectangle(240, 0,200,200),
0, 0, img.Width, img.Height, GraphicsUnit.Pixel,ia);

//リソース開放
g.Dispose();

〜〜〜
img.Save(FileName,System.Drawing.Imaging.ImageFormat.Bmp)
で,ファイルを指定すれば,変換後のファイルが保存できると思っていたのですが,【g.DrawImage】のところでは,描画しているだけで,それを保存することが出来ませんでした。
 どなたか,ご教授願います。

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-12-26 12:31
引用:

img.Save(FileName,System.Drawing.Imaging.ImageFormat.Bmp)
で,ファイルを指定すれば,変換後のファイルが保存できると思っていたのですが,【g.DrawImage】のところでは,描画しているだけで,それを保存することが出来ませんでした。



その通りです。

g.DrawImage() は「img を ColorMap を考慮して Graphics に描画」しているだけであって、元の img が加工されるわけではありません。

基本的には

引用:

Graphics g = pictureBox1.CreateGraphics();



なんてことをして、PictureBox に直接描画するような手順が間違いです。

# 良く見かけるんですが、なんでこんなことするんでしょうね?
# 再描画も自分でやらなくちゃいけないし、メリットなんかないような気が。

PictureBox には Image プロパティがあるので

引用:

pictureBox1.Image = new Bitmap(必要なサイズ、ビットマップ形式を指定);



として、まず PictureBox に Bitmap を与え、描画(と言うより画像の加工の結果の反映)はその Bitpmap に対して行うべきです。

そうすれば

引用:

Graphics g = Graphics.FromImage(pictureBox1.Image);

g.DrawingImage(img, 適宜);
pictureBox1.Image.Save(適宜);



で、「img を ColorMap を考慮して描画した結果」を保存することが出来ます。
ミズー
会議室デビュー日: 2006/10/25
投稿数: 8
投稿日時: 2006-12-26 13:22
ご回答ありがとうございます。
 ご指示どおりに修正することで,色を変換したbmpファイルを作成することができました。
 明快でわかりやすい文章で,とてもわかりやすかったです。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)