3
var originalImageBytes = originalFile.FileBytes();
// Convert bytes to image
Image originalImage;
using (var ms = new MemoryStream(originalImageBytes))
{
originalImage = Image.FromStream(ms);
}
// Convert back to byte array
using (var ms = new MemoryStream())
{
originalImage.Save(ms, ImageFormat.Png);
return ms.ToArray();
}
그러나 프로그램이 최종 return ms.ToArray()
줄에 무기한 중단, 잘 작동 [] 컴퓨터가 바이트합니다.이미지 무기한 언제든지 <code>originalImageBytes</code> 반환
ms.ToArray()
이 멈추는 이유는 무엇입니까?
감사합니다. 만약 첫 번째 블록을'Bitmap originalImage; using (var ms = new MemoryStream (originalImageBytes)) { originalImage = new Bitmap (Image.FromStream (ms)); }'잘 동작합니다. –
이것을 읽는 다른 사람에게는 위의 코드를 사용하지 마십시오! 제 생각 엔 .net 가비지 수집기가 망가 뜨리면 Image 객체에서 Bitmap 객체를 생성 할 때 이상한 동작이 발생합니다. 전체 메서드에 대해 원본 이미지 메모리 스트림을 열어 두는 것이 제대로 작동하는 유일한 방법입니다. –
이미지가 Windows의 핸들에 크게 의존하기 때문입니다. 메모리 스트림을 닫으면 참조하는 메모리 블록이 지워집니다. –