예외 정보: System.Runtime.InteropServices.ExternalException: GDI+에서 일반 오류가 발생했습니다.

스택 추적:
[System.Runtime.InteropServices.ExternalException: GDI+에서 일반 오류가 발생했습니다.]
   위치: System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
   위치: System.Drawing.Image.Save(Stream stream, ImageFormat format)
   위치: INJE.IJIS.SCFF.COMM.CO01000.CO01001M.Save()
   위치: INJE.IJIS.SCFF.COMM.CO01000.CO01001M.ubtnSave_Click(Object sender, EventArgs e)


private void FunctionDoSomething(){   
  ...
  DataRowView rv = 데이터로뷰;
  if (rv == null) return;

  if (rv.Row["이미지컬럼"] != null && rv.Row["이미지컬럼"] != DBNull.Value)
  {
      //MessageBox.Show(rv.Row["이미지컬럼"].GetType().ToString());
      byte[] buffer = rv.Row["이미지컬럼"] as byte[];
      System.IO.MemoryStream mStream = new System.IO.MemoryStream(buffer);
      mStream.Flush();
      Image tImage = Image.FromStream((System.IO.Stream)mStream, true, true);
      
      this.pic픽쳐박스Control.Image = tImage;
      mStream.Close(); // 이부분 때문에 오류발생
  }    
}

private void FunctionDoSomethingTwo(){
  System.IO.MemoryStream mStream = new System.IO.MemoryStream();
  byte[] buffer = null;
  Image img = this.pic픽쳐박스Control.Image as Image;

  if (img != null)
  {
      img.Save(mStream, img.RawFormat); // Debug 해보니 여기서 오류발생
      buffer = mStream.ToArray();
  }
  mStream.Close();
}


FunctionDoSomething() 를 호출하여 pic픽쳐박스Control에 이미지를 설정하고
FunctionDoSomethingTwo() 를 호출하여 pic픽쳐박스Control 의 이미지로 부터 Image 객체의 byte[]을 생성할때 오류 발생!!!

FunctionDoSomething() 에서 pic픽쳐박스Control 에 이미지를 설정한 후 Stream 객체를 닫지 않아야 한다.

관련 자료 http://support.microsoft.com/kb/814675/en-us
이올린 태그검색올블로그 태그검색테크노라티 태그검색태그스토리 태그검색티스토리 태그검색

TRACKBACK URL : http://bbon.kr/blog/trackback/720

  1. Subject: bbon의 생각

    Tracked from bbon's me2DAY
     | DELETE

    System.Drawing.Image 관련 문제해결 :: 예외 정보: System.Runtime.InteropServices.ExternalExceptio…