2011-11-29 34 views
6

現在、ビットマップイメージを保存しようとしていますが、背景が黒に変化しています。Bitmap-Cを保存すると背景が黒くなる#

画像を完全に細かく保存することができます。画像も「保存」することができます。私は既存のイメージを上書きしなければならないので、ずっと難しかったです。

しかし、画像を保存すると、背景が黒くなります。そして私はそれが何を引き起こしているのか分かりません。

Bitmap tempImage = new Bitmap(DrawArea); 

DrawArea.Dispose(); 

if (extension == ".jpeg") 
    tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 
else 
    tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp); 

DrawArea = new Bitmap(tempImage); 
pictureBox1.Image = DrawArea; 

tempImage.Dispose(); 
+0

はhttp://stackoverflow.com/questions/4067448/converting-image-to-bitmap-turns-background-blackを参照しますか、 http://stackoverflow.com/questions/6513633/c-sharp-converting-transparent-png-to-jpg-black-background –

答えて

21

が空白のビットマップを作成します。

は、ここに私のコードです。その空のビットマップで書き込むグラフィックスオブジェクトを作成します。ビットマップを消去し、その色を白に変更します。次に、イメージを描画し、ビットマップを保存します。

  Bitmap blank = new Bitmap(DrawArea.Width, DrawArea.Height); 
      Graphics g = Graphics.FromImage(blank); 
      g.Clear(Color.White); 
      g.DrawImage(DrawArea, 0, 0, DrawArea.Width, DrawArea.Height); 

      Bitmap tempImage = new Bitmap(blank); 
      blank.Dispose(); 
      DrawArea.Dispose(); 

      if (extension == ".jpeg") 
       tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 
      else 
       tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp); 

      DrawArea = new Bitmap(tempImage); 
      pictureBox1.Image = DrawArea; 

      tempImage.Dispose(); 
+2

ありがとう人は私の一日を救った – Vivekh

+3

私の超古い質問が誰かを助けることができることを見てうれしい。 – Johnrad

+0

あなたの解決策が使用されています(投票されました)が、g.save()はここでどのように起こりますか?新しいビットマップ、新しいグラフィックス(ビットマップ)を作成し、すべてのコンテンツを追加してからbitmap.saveを作成しました。ここでグラフィックコンテンツがビットマップにどのようにプッシュされるのですか? – Vijayaraghavan

-1

というよりも、JPEG、PNG形式の画像を保存するようにしてください。..

+0

あなたは技術的に正しいので、+1します – smoothumut

関連する問題