- - PR -
色変換後のbmpファイルの保存
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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】のところでは,描画しているだけで,それを保存することが出来ませんでした。 どなたか,ご教授願います。 | ||||||||||||||||
|
投稿日時: 2006-12-26 12:31
その通りです。 g.DrawImage() は「img を ColorMap を考慮して Graphics に描画」しているだけであって、元の img が加工されるわけではありません。 基本的には
なんてことをして、PictureBox に直接描画するような手順が間違いです。 # 良く見かけるんですが、なんでこんなことするんでしょうね? # 再描画も自分でやらなくちゃいけないし、メリットなんかないような気が。 PictureBox には Image プロパティがあるので
として、まず PictureBox に Bitmap を与え、描画(と言うより画像の加工の結果の反映)はその Bitpmap に対して行うべきです。 そうすれば
で、「img を ColorMap を考慮して描画した結果」を保存することが出来ます。 | ||||||||||||||||
|
投稿日時: 2006-12-26 13:22
ご回答ありがとうございます。
ご指示どおりに修正することで,色を変換したbmpファイルを作成することができました。 明快でわかりやすい文章で,とてもわかりやすかったです。ありがとうございました。 |
1