我在从 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。所有的数据都在那里。
我谢谢你!