图像到byte []无限期挂起

时间:2016-10-04 12:07:56

标签: c# arrays image memorystream

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()导致挂起?

1 个答案:

答案 0 :(得分:3)

这可能与Image使用Stream的某些奇怪行为有关。在您完成图片之前,您需要have to keep open the stream,因为Image可以随意延迟加载内容。

Save实际上可能触发读取(然后)关闭和处置MemoryStream。试着看看如果你不关闭流会发生什么。