2009-11-02 14 views
0

이미지를 "다시 저장"하려고하는데 "GDI +에서 일반 오류가 발생했습니다"라는 오류 메시지가 나타납니다. 나는 아직이 해결책을 찾지 못했다. 제안의 대부분은 언급 :"GDI +에서 일반 오류가 발생했습니다"저장시

  • 스트림 (즉, 파일 스트림)를 사용하지 않을 잠긴 것을 확인
  • 스트림이 개체의 수명을 위해 배치되어 있지 않은지 확인 (안 당신이
  • 는 비트 맵 객체 내에서 객체를 복제하려고, 그 저장할 사용) 아래에서 살펴 보 겠지만() 나를 위해

를 작동하지 않았다 내가 사용하는 코드는 아래와 같이 표시됩니다

using (Stream @imageStream = ResourceManager.CreateFile(finalResourceId, imageFileName)) 
{ 
    using (MemoryStream ms = new MemoryStream(imageFile.ResourceObject)) 
    { 
     using (Image img = Image.FromStream(ms)) 
     { 
      imageWidth = img.Width; 
      imageHeight = img.Height; 
      img.Save(@imageStream, img.RawFormat); 
     } 
    } 
} 

위의 코드에서 ResourceManager.CreateFileMemoryStream과 동일한 값을 반환하므로 "자원 문제"가 없어야합니다.

다른 누구도이 문제를 보지 못했고 해결책을 공유 할 수 있다고 생각하지 않습니까? 도와 주셔서 미리 감사드립니다.

+0

당신도 알다시피, 당신은 그 진술을 사용하여 결합 할 수 있습니다. –

+0

에 ASPNET_MACHINE 및 NETWORKSERVICE에 쓰기 권한이 저장되는 폴더가 있습니까? – Scozzard

+0

안녕하세요, using 문에 대한 제안에 감사드립니다. 퍼미션 쿼리에 관해서는, 파일 시스템에 쓰지 않고 모든 것을 메모리에 유지하면서 이것들이 작동하지 않아야합니다. –

답변

1

@Scozzard님께 고맙다는 회신을 보내 주셔서 감사합니다! 내가 메모리에 완전히 일하고 있어요 때문에

int imageWidth, imageHeight; 
using (Stream imageStream = ResourceManager.CreateFile(finalResourceId, imageFileName)) 
{ 
    using (Image img = Image.FromStream(new MemoryStream(imageFile.ResourceObject))) 
    { 
     imageWidth = img.Width; 
     imageHeight = img.Height; 
    } 
    imageStream.Write(imageFile.ResourceObject, 0, imageFile.ResourceObject.Length); 
} 

은 정말이 같은 이미지 형식으로되어로 다시 저장하는 이미지 객체를 사용할 필요가 없습니다 - 난 그냥 새에 바이트 버퍼를 복사 할 수 있습니다 흐름.

의견을 보내 주셔서 감사합니다.

+0

걱정하지 마라. – Scozzard

관련 문제