0

我在从 vb.net 中的字节数组创建位图时遇到问题。
我从 GoPro 获取像素数据为每像素数据 1 位。
它看起来像这样:

0 0 0 0 0 0 0 0 1 1 5D 6C 63 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 FF FC 4 0 1C 70 71 C1 0 4 E 0 36 DA DB 61 77 74 4 0 36 D8 DB 63 77 74 11 0 36 D8 DB 63 77 74 E 0 36 DA DB 63 77 74 20 80 36 D8 DB 61 77 74 9F 20 1C 70 71 C1 0 4 40 40 0 0 0 1 FF FC 3F 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FF FF FF FF FF FF FF F0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 36 3 E3 F0 0 0 0 C F6 7 FB FC 0 0 0 C C0 6 1B C 0 0 0 D 80 0 1B C 0 0 0 F 80 3 FB C 0 0 0 E 0 3 E3 C 0 0 0 D 80 6 3 C 0 0 0 D C0 6 1B C 0 0 0 C C0 6 1B C 0 0 0 C 30 3 E3 F0 0 0 0 C 30 3 E3 F0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FF FF FF FF FF FF FF F0 FF FF FF FF FF FF BF F0 F0 7 FF FF FF FB BB F0 E0 3 9F E0 7F FD F7 F0 E7 3 1F E0 7F FF 1F F0 E7 2 1F E7 FF FE EF F0 E7 2 1F E7 FF F2 C9 F0 E0 2 1F E7 FF FE 8F F0 E0 2 1F E7 FF FF 1F F0 E0 3 1F E7 FF FD F7 F0 E0 3 9F E7 FF FB BB F0 F0 7 FF FF FF FF BF F0 FF FF FF FF FF FF FF F0 FF FF FF FF FF FF FF F0 0

前 15 个字节是请求的重复。这个和最后一个字节被截断

使用以下代码,我将数据转换为位图:

Private Function GetBitmap(lcdContend) As Bitmap
    Dim lcdBytes(599) As Byte
    Dim split = lcdContend.Split(" ")

    For lci = 0 To 599
        lcdBytes(lci) = Convert.ToByte(split(lci + 15), 16) Xor 255
    Next

    Dim img = New Bitmap(64, 75)

    Dim bmd As BitmapData = img.LockBits(
       New Rectangle(0, 0, img.Width, img.Height),
       ImageLockMode.WriteOnly,
       PixelFormat.Format1bppIndexed)

    Marshal.Copy(lcdBytes, 0, bmd.Scan0, lcdBytes.Length)

    img.UnlockBits(bmd)

    'img.RotateFlip(RotateFlipType.Rotate180FlipX)

    Return img
End Function

位图宽 64 像素,高 75 像素,大小为 600 字节,然后我将位图加载到 PictureBox 中。结果如下所示: 错误显示

整个图片向左移动了 4 个像素。如果我旋转和翻转图像,整个图片也会向左移动 4 个像素。 翻转 如何获得图像上缺少的 4 像素列?我已经尝试了很多,包括转换为 24bpp。一切都导致相同的结果

PS:数据没问题,我是自己手动转换成bit,然后手动画了一个bitmap。所有的数据都在那里。

我谢谢你!

4

1 回答 1

1

显示屏宽度仅为 60 像素。我的错。所以一切都是对的。谢谢史蒂夫

于 2020-12-06T16:40:28.367 回答