C# 如何从C中的字节[]将图像放入图片框中#

C# 如何从C中的字节[]将图像放入图片框中#,c#,.net,picturebox,bitmapimage,C#,.net,Picturebox,Bitmapimage,我有一个字节数组,它包含位图格式的图像二进制数据。如何使用C#中的PictureBox控件显示它 我浏览了下面列出的几篇文章,但不确定在将字节数组发送到picturebox之前是否需要将其转换为其他内容。谢谢你的帮助。谢谢 此函数将字节数组转换为位图,可用于设置picturebox的图像属性 public static Bitmap ByteToImage(byte[] blob) { MemoryStream mStream = new MemoryStream(); byt

我有一个字节数组,它包含位图格式的图像二进制数据。如何使用C#中的PictureBox控件显示它

我浏览了下面列出的几篇文章,但不确定在将字节数组发送到picturebox之前是否需要将其转换为其他内容。谢谢你的帮助。谢谢


此函数将字节数组转换为位图,可用于设置picturebox的
图像属性

public static Bitmap ByteToImage(byte[] blob)
{
    MemoryStream mStream = new MemoryStream();
    byte[] pData = blob;
    mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
    Bitmap bm = new Bitmap(mStream, false);
    mStream.Dispose();
    return bm;
}
示例用法:

pictureBox.Image = ByteToImage(byteArr); // byteArr holds byte array value

System.Drawing命名空间中的ImageConverter类可以进行转换:

byte[] imageArray = **byte array**
ImageConverter converter = new ImageConverter();
pictureButton.Image = (Image)converter.ConvertFrom(imageArray);
或者你可以像这样直接访问


pictureBox1.Image=Image.FromFile(openFileDialog1.FileName)

您也可以像这样将pictureBox图像转换为字节数组

MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] img = ms.ToArray();

如果您想使用BinaryReader进行转换,请像这样使用

MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] img = ms.ToArray();
FileStream fs=newfilestream(openFileDialog1.FileName,FileMode.Open,FileAccess.Read)

BinaryReader br=新的BinaryReader(fs)


字节[]img=br.ReadBytes((int)fs.Length)

我认为这是一个错误的答案。位图构造器的文档清楚地说明,
您必须在位图的生命周期内保持流的打开状态。
显然,在这个答案中,即使在使用图像之前,流也会关闭。请参阅此处的文档:正确,内存区域的流查看器(字节[]的包装器)已关闭,但此时,位图已将该内存块设置为图像。处理流不会破坏或释放底层内存。直到字节[]本身被垃圾收集器释放或声明,它才会被销毁。即使在接受的答案中,他们也会在返回位图之前处理流。
pData
变量的用途是什么?这里缺少参数
Dim picture As Byte()=GetBytes(ListView2.Items(index).SubItems(8).Text)Dim converter As New ImageConverter()PictureBox1.Image=DirectCast(converter.ConvertFrom(picture),Image)
Dim bm As New Bitmap(mStream,False)
参数无效此处缺少参数
变暗图片为字节()=GetBytes(ListView2.Items(index).子项(8.Text)变暗转换器为新的ImageConverter()PictureBox1.Image=DirectCast(converter.ConvertFrom(picture),Image)
参数在最后一行无效
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] img = ms.ToArray();