1

我在显示图像时遇到问题,它的字节作为数据块进入我的 pc 串行端口,一次 32 个字节,如何将所有传入字节保存在同一个内存流中,然后如何在图片中显示此图像盒子

这是一段代码

if (((int)header[0] == 0x76) && (header[1] == 0x00) && (header[2] == 0x32) && (header[3] == 0x00) && (header[4] == 0x00)) /// the header is true ,read the image bytes
{
    for (int i = 0; i < 32; i++)
        Jpg[i] = (byte)CamPort.ReadByte();

    fs.Write(Jpg, 0, Jpg.Length);

    for (int i = 1; i < Jpg.Length; i++)
    {
        if ((Jpg[i - 1] == 0xFF) && (Jpg[i - 0] == 0xD9))// reaching the last two bytes(FF D9) of Jpg //
        {
            EndFlag = true;
            MessageBox.Show("done");
            //OneSnap.Image = Image.FromStream(fs);
            fs.Close();
        }
    }
}
else
{
    MessageBox.Show("DONE");
}
4

1 回答 1

2

我只会使用一个嵌套循环并一次将 32 个字节添加到一个更大的数组中。

int offset = 0;
for(int i = 0; i < total; i++){
    for(int j = 0; j < 32; j++){
        offset = i * 32;
        jpg[offset + j] = (byte)CamPort.ReadByte();
    }
 }

类似的东西应该将所有数据放入一个数组中,然后您可以使用/处理该数据。从那里开始,以您喜欢的任何方式显示数据应该是一件相对简单的事情。

于 2013-01-27T20:50:26.187 回答