【问题标题】:HBITMAP/BITMAP to BITMAPINFOHEADER -> over network - > BITMAPINFOHEADER to HBITMAP/BITMAPHBITMAP/BITMAP 到 BITMAPINFOHEADER -> 通过网络 -> BITMAPINFOHEADER 到 HBITMAP/BITMAP
【发布时间】:2012-09-08 22:17:34
【问题描述】:
我认为标题非常具有解释性,但这里更详细地说明了我正在尝试做的事情。
基本上说我在内存中加载了一个 BITMAP。
我想从中提取 BITMAPINFOHEADER 并将其添加到我的数据包结构中,该结构将通过套接字传输。*
传输它不是问题,但一旦它到达我想将它转回 BITMAP 以便我可以使用它。
我一直在为此苦苦挣扎,我一直在寻找高处和低处,但没有任何运气。一个示例和我需要完成的功能列表会很有帮助。
非常感谢。我在win32 c++中需要这个。 [没有 .NET 或 MFC]
赞赏。
【问题讨论】:
标签:
c++
winapi
bitmap
structure
【解决方案1】:
发件人:
- 你有
HBITMAP
- 使用
GetObject获取其属性,例如宽度和高度
- 使用
CreateDIBSection创建另一个HBITMAP,具有相同分辨率的24/32位RGB,VOID*指针指向原始字节;您将在代码中初始化 BITMAPINFOHEDER - 此时您应该已经拥有所需的所有数据
-
BitBlt从原位图变成了这个
- 将您的
BITMAPINFOHEDER + 字节发送到网络的辅助位图数据指针(sizeof BITMAPINFOHEDER + BITMAPINFOHEDER::biSizeImage 字节)
接收者:
- 使用
CreateDIBSection 使用收到的BITMAPINFOHEDER 创建位图;您再次获得指向原始数据的指针
-
memcpy 将图像数据放入给定指针下的内存位置,或者只是在那里逐步接收数据
- 你又有
HBITMAP了