[英]How to convert jpg byte array to image and display in picturebox?
[英]Convert Byte to Image jpg
我将byte []转换为.jpg文件时遇到问题。 当我尝试转换字节时,此方法出现异常:
using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length))
{
ms.Write(bytes, 0, bytes.Length);
Image image = Image.FromStream(ms, true, false);
}
例外:
该参数在System.Drawing.Image.FromStream中无效(流流,布尔值useEmbeddedColorManagement,布尔值validateImageData)
有什么建议吗?
解决方案* :删除以下行: ms.Write(bytes, 0, bytes.Length);
*如果这不起作用,则bytes
数组不包含有效的图像数据。
原因:
该行使用字节数组中的字节初始化MemoryStream
。 它将在位置0(开始)处开始流:
using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length))
在您的情况下,可以简化为:
using (MemoryStream ms = new MemoryStream(bytes))
然后,此行将相同的字节写入流中。 它将使您的流保留在位置bytes.Length
(末尾):
ms.Write(bytes, 0, bytes.Length);
该行将尝试从当前位置(末尾)开始读取流中的图像。 由于0个字节不会构成图像,因此它会给您以下异常:
Image image = Image.FromStream(ms, true, false);
如Jimi所述,将其包装成一个方法可能会更好:
public static Image ImageFromByteArray(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream(bytes))
using (Image image = Image.FromStream(ms, true, true))
{
return (Image)image.Clone();
}
}
使用Clone()
的原因是,如果原始流已被丢弃,则可能导致保存图像时遇到麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.