2011-01-17 7 views
0

이미지 파일을 저장하고 이미지 네임 스페이스를 사용하여 이미지의 크기를 조정합니다.이미지에 파일 핸들을 내 보냅니다.

이미지가 시스템에 저장 될 때부터 이미지 크기 조정이 처리 될 때까지 파일 핸들이 즉시 해제되지 않아서 "GDI +에서 일반 오류가 발생했습니다. "

여기 내 코드입니다 : VS 2008 년 내가 asyncfileupload 아약스 컨트롤을 사용하고

, C#을

string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName); 
AsyncFileUpload1.SaveAs(Server.MapPath("./") + "abc.jpeg"); 

//File handle seems not get released right away here.    

System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(Server.MapPath("./") + "abc.jpeg"); 
System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(60, 60, null, IntPtr.Zero); 

NewImage.Save(Server.MapPath("./") + "abc.jpeg"); 

답변

2

System.Drawing.Image는 일회용입니다, 당신은 using 문이 필요합니다.

string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName); 
AsyncFileUpload1.SaveAs(Server.MapPath("./") + "abc.jpeg"); 

System.Drawing.Image NewImage = null; 
//File handle seems not get released right away here. 
using(System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(Server.MapPath("./") + "abc.jpeg")) 
    NewImage = FullsizeImage.GetThumbnailImage(60, 60, null, IntPtr.Zero); 

using(NewImage) 
    NewImage.Save(Server.MapPath("./") + "abc.jpeg"); 
0

다른 해결책은 모든 것을 정리하는 Dispose 함수를 사용하는 것입니다. 예 :

FullsizeImage.Dispose();

관련 문제