하나의 다중 이미지 TIFF 파일에 여러 개의 다중 이미지 TIFF 파일을 조인하고 원본 TIFF 파일을 삭제하는 데 문제가 있습니다. Image 클래스 그 (것)들에 손잡이를 붙드는 것을 계속한다.Image.FromFile을 사용하여 파일 핸들을 해제하지 않습니다.
나는 Image.FromFile를 통해 TIFF 이미지를 읽고 있어요 :
Bitmap resultTiff = (Bitmap) Image.FromFile(strImageFile);
가 그 후에 나는 다른 모든 TIFF 이미지 같은 방법으로 읽고 결과 TIFF 이미지에 추가합니다.
내가 참조를 해제하고 결과 파일을 저장하려면이 코드를 사용이 끝나면 :
ep.Param[0] = new EncoderParameter(enc, (long) EncoderValue.Flush);
resultTiff.SaveAdd(ep);
resultTiff.Dispose();
가 이제 문제는 파일 의 핸들이 여전히 존재 함을는 (따라서 파일이
을 삭제할 수 없습니다됩니다)resultTiff.Dispose()
호출 후
GC.Collect()
을 호출하지 않는 한.
내가 GC를 호출하는 것에 익숙하지 않다는 것을 상상할 수 있습니다. 다른 방법이 있습니까?
resultTiff = null;
+1입니다. 'Image.FromFile'은 항상 옳은 일을하는 것은 아닙니다. 수동으로 파일 스트림을 열고 비트 맵을로드하여 대체하면 유연성이 높아집니다. – stakx
어떤 이유로 'FileStream'은 여전히 저에게 같은 문제를 안겨주었습니다. 대신 나는'Image.FromStream (새로운 MemoryStream (File.ReadAllBytes (path))')를 사용했다. – William