> 백엔드 개발 > C++ > 닫힌 MemoryStream에 이미지를 저장할 때 GDI 예외를 방지하는 방법은 무엇입니까?

닫힌 MemoryStream에 이미지를 저장할 때 GDI 예외를 방지하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-16 20:46:15
원래의
974명이 탐색했습니다.

How to Avoid GDI  Exceptions When Saving Images to a Closed MemoryStream?

GDI의 Image.Save()에 대한 메모리 스트림 폐쇄 문제

문제:

이미지를 사용하여 이미지를 저장할 때 .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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿