我认为标题非常具有解释性,但是这里有我要尝试的细节。
基本上说我在内存中加载了一个 BITMAP。

我想从中提取BITMAPINFOHEADER并将其添加到我的数据包结构中,该数据包结构将通过套接字传输。

转移它不是问题,但是一旦到达,我想将其重新转换为BITMAP,以便我可以使用它。

我一直在为此而苦苦挣扎,我一直走高走低,没有任何运气。我需要的一个示例和功能列表将很有帮助。

非常感谢。我在Win32 C++中需要这个。 [没有.NET或MFC]
感激。

最佳答案

发件人:

  • 您有HBITMAP
  • 使用GetObject
  • 获取其属性,例如宽度和高度
  • 使用CreateDIBSection使用指向原始字节的HBITMAP指针创建另一个分辨率为24/32位RGB的VOID*;您将在代码中初始化BITMAPINFOHEDER-届时您应该已经拥有了所需的所有数据
  • 将原始位图中的
  • BitBlt放入此
  • 将辅助位图数据指针处的BITMAPINFOHEDER +字节发送到网络(sizeof BITMAPINFOHEDER + BITMAPINFOHEDER::biSizeImage字节)

  • 接收者:
  • 使用CreateDIBSection使用收到的BITMAPINFOHEDER创建位图;您再次获得指向原始数据
  • 的指针
  • memcpy将图像数据放入给定指针下的存储位置,或者只是逐步接收那里的数据
  • 您又有了HBITMAP
  • 10-08 17:41