2011-11-29 12 views
6

현재 비트 맵 이미지를 저장하려고하지만 배경이 검은 색으로 변경됩니다.비트 맵을 저장할 때 배경이 검은 색으로 변함 - 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

빈 비트 맵을 만듭니다

여기 내 코드입니다. 빈 비트 맵으로 쓸 그래픽 객체를 만듭니다. 비트 맵을 지우고 색상을 흰색으로 변경하십시오. 그런 다음 이미지를 그리고 비트 맵을 저장하십시오. 오히려 JPEG보다 PNG 형식으로 이미지를 저장하는

  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

봅니다 ..

+0

기술적으로 정확하므로 +1 할 수 있습니다. – smoothumut

관련 문제