문제:
이미지를 사용하여 이미지를 저장할 때 .Save(...) 메모리 스트림을 사용하는 경우 저장하기 전에 메모리 스트림이 닫히면 개발자는 GDI 예외가 발생할 수 있습니다. 그러나 동적 이미지 생성 시나리오에서는 저장하기 전에 스트림을 닫는 것이 필요합니다.
코드 시나리오:
Bitmap image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); }
이 시나리오에서는 메모리 스트림 originalBinaryDataStream2가 닫힙니다. using 블록을 종료할 때. 이후에 image2 이미지를 저장하면 GDI 예외가 발생합니다.
해결 방법:
메모리 스트림은 명시적인 종료가 필요하지 않으므로 수동으로 닫을 필요가 없습니다. 하지만 비트맵 객체를 닫으면 연관된 메모리 스트림이 자동으로 닫힙니다.
Bitmap image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); } image2.Dispose(); // Also closes the memory stream
비트맵을 폐기하면 메모리 스트림이 제대로 닫혀 예외 없이 이미지를 저장할 수 있습니다.
위 내용은 닫힌 MemoryStream에 이미지를 저장할 때 GDI 예외를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!