为了账号安全,请及时绑定邮箱和手机立即绑定

我应该如何使用 GetDIBits 函数

我应该如何使用 GetDIBits 函数

Go
慕婉清6462132 2022-05-18 13:47:34
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)


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信