Arrays 如何使ImageToByteArray函数更通用?
我有两种方法将图像从和转换为字节数组,这是我从StackOverflow获得的Arrays 如何使ImageToByteArray函数更通用?,arrays,vb.net,image,memorystream,Arrays,Vb.net,Image,Memorystream,我有两种方法将图像从和转换为字节数组,这是我从StackOverflow获得的 Public Function ImageToByteArray(imageIn As Image) As Byte() Dim ms As MemoryStream = New MemoryStream() imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png) Return ms.ToArray() End Function Pu
Public Function ImageToByteArray(imageIn As Image) As Byte()
Dim ms As MemoryStream = New MemoryStream()
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
Return ms.ToArray()
End Function
Public Function ByteArrayToImage(byteArrayIn As Byte()) As Image
Dim ms As MemoryStream = new MemoryStream(byteArrayIn)
Dim returnImage As Image = System.Drawing.Image.FromStream(ms)
Return returnImage
End Function
当我的图像是png文件时,两者都可以正常工作。但是当用户选择jepg文件或gif时,我会得到一个System.Runtime.InteropServices.ExternalException:“GDI+中发生了一个一般性错误。
如何使ImageToByteArray函数更通用?i、 e.接受更多文件格式。该类有一个名为的属性,您可以尝试使用它,而不是硬编码格式
Public Function ImageToByteArray(imageIn As Image) As Byte()
Dim ms As MemoryStream = New MemoryStream()
imageIn.Save(ms, imageIn.RawFormat)
Return ms.ToArray()
End Function
如果这不起作用,则需要将格式作为参数传递
Public Function ImageToByteArray(imageIn As Image, format As System.Drawing.Imaging.ImageFormat) As Byte()
Dim ms As MemoryStream = New MemoryStream()
imageIn.Save(ms, imageIn.RawFormat)
Return ms.ToArray()
End Function
您是否尝试过使用.RawFormat属性而不是在.Save中对其进行硬编码?@the_lotus能否更全面地解释您的评论?…使用imageIn.RawFormat,我可以使用gif或png,但jpeg仍然会导致错误。@Randy hmmmm,不确定这种情况下会发生什么。