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();
}
在任何时候返回originalImageBytes
都可以正常工作,但程序会无限期地挂在return ms.ToArray()
行的最后一行。
为什么ms.ToArray()
导致挂起?
答案 0 :(得分:3)
这可能与Image
使用Stream
的某些奇怪行为有关。在您完成图片之前,您需要have to keep open the stream,因为Image
可以随意延迟加载内容。
Save
实际上可能触发读取(然后)关闭和处置MemoryStream
。试着看看如果你不关闭流会发生什么。