我正在从数据库中读取图像。
我读取一个字段的二进制/blob,然后将其转换为如下图像:
Public Function BytesToImage(ByVal ByteArr() As Byte) As Image
If ByteArr.Length < 1 Then
Return Nothing
End If
Dim ImageStream As MemoryStream 'Needs to stay open for the image's life-time
Dim nImage As Image = Nothing
Try
ImageStream = New MemoryStream(ByteArr)
nImage = Image.FromStream(ImageStream, True)
Catch ex As Exception
nImage = Nothing
End Try
Return nImage
End Function
我不能使用“使用nImageStream作为新内存流(ByteArr)”,因为一段时间后图像会“死”。
根据文档,MemoryStream需要在图像的生命周期内保持打开状态。
我应该不在乎MemoryStream,只接受它在那里并且仍然在“后台”打开,还是应该克隆图像并关闭MemoryStream?