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();
}
在任何點返回originalImageBytes
工作得很好,然而該程序無限期地懸掛在最終return ms.ToArray()
線。圖片爲byte []無限期掛起
爲什麼ms.ToArray()
會造成掛起?
謝謝,你說得對。如果我將第一個塊更改爲'Bitmap originalImage;使用(var ms = new MemoryStream(originalImageBytes)) originalImage = new Bitmap(Image.FromStream(ms)); '它工作正常。 –
對於閱讀此內容的其他人,請勿執行上述代碼!我認爲.net垃圾回收器會與它混淆,即使從Image對象創建Bitmap對象,您也會得到奇怪的行爲。保持原始圖像內存流爲整個方法打開是唯一正常工作的。 –
這是因爲圖像嚴重依賴於Windows的句柄。關閉內存流會清除它引用的內存塊。 –