var bitmap win.BITMAPwin.GetObject(win.HGDIOBJ(hBitmap), unsafe.Sizeof(bitmap), unsafe.Pointer(&bitmap))var bmpInfo win.BITMAPINFObmpInfo.BmiHeader.BiSize = uint32(unsafe.Sizeof(Info.BmiHeader))....................Width = width....................Height = height....................Planes = 1....................BitCount = 24....................Compression = win.BI_RGBvar hdc win.HDChdc = win.GetDC(0)win.GetDIBits(hdc, bitmap, 0, uint32(bitmap.BmHeight), bitmapInfo, nil, 0)pBits := make([]byte, imageSize)win.GetDIBits(hdc, bitmap, 0, uint32(bitmap.BmHeight), bitmapInfo, (*byte)(unsafe.Pointer(&pBits)), 0)使用包github.com/lxn/win首先,在获取GetDIBits函数之前,我们已经完成了所有的工作。之后,我终于尝试使用 GetDIBits 函数获取图像数据,但它一直返回 0。我将 pBits 的数据类型更改为“unsafe.Pointer”或“* byte”并尝试过,但它返回 nil 或 0。如何从 GetDIBits 函数中获取图像数据?
1 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
我对 Go 语言不太了解,但是当你使用 时GetDIBits
,参数的位置是不正确的。
lpvBits
指向缓冲区以接收位图数据的指针。如果此参数为 NULL,则函数将位图的尺寸和格式传递给 lpbi 参数指向的 BITMAPINFO 结构。
lpbmi
指向指定 DIB 数据所需格式的 BITMAPINFO 结构的指针。
您可以像这样修改它:
win.GetDIBits(hdc, bitmap, 0, uint32(bitmap.BmHeight), nil, bitmapInfo, 0)
pBits := make([]byte, imageSize)
win.GetDIBits(hdc, bitmap, 0, uint32(bitmap.BmHeight), (*byte)(unsafe.Pointer(&pBits)), bitmapInfo, 0)
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消