2011-11-29 23 views
6

Obecnie próbuję zapisać obraz bitmapowy, ale tło zmienia się na czarne.Tło zmienia kolor na czarny podczas zapisywania bitmapy - C#

Mogę "Zapisz jako" obraz idealnie w porządku. Mogę też "zapisać" również obraz. Co było znacznie trudniejsze, ponieważ musiałem nadpisać istniejący obraz.

Jednak, gdy "zapisuję" mój obraz, tło staje się czarne. I nie mam pojęcia, co go powoduje.

Oto mój kod:

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

Zobacz http://stackoverflow.com/questions/4067448/converting-image-to-bitmap-turns-background-black lub http://stackoverflow.com/questions/6513633/c-sharp-converting-transparent-png-to-jpg-black-background –

Odpowiedz

21

Utwórz pustą bitmapę. Stwórz obiekt graficzny do napisania pustą bitmapą. Wyczyść bitmapę i zmień jej kolor na biały. Następnie narysuj obrazek, a następnie zapisz bitmapę.

  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

Dzięki człowiekowi uratowałem mój dzień – Vivekh

+3

Miło widzieć moje super stare pytanie może komuś pomóc. – Johnrad

+0

Twoje rozwiązanie jest używane (w głosowaniu), ale jak tu występuje g.save()? Stworzyłem nową bitmapę, nową grafikę (bitmapę), dodając całą zawartość, a następnie bitmap.save, tutaj w jaki sposób zawartość grafiki jest przekazywana do bitmapy? – Vijayaraghavan

-1

spróbuj zapisać obraz w formacie PNG zamiast JPEG ..

+0

masz rację technicznie, więc +1 dla ciebie – smoothumut

Powiązane problemy