HBITMAP / BITMAP到BITMAPINFOHEADER - >通过网络 - > BITMAPINFOHEADER到HBITMAP / BITMAP

时间:2012-09-16 12:04:50

标签: c++ winapi bitmap structure

我认为标题非常具有说明性,但这里有更详细的内容,我正在尝试做什么。 基本上我说我在内存中加载了 BITMAP。

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

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

我一直在努力解决这个问题,而且我没有任何运气就搜索过高低。我将需要一个示例和一系列函数来实现这一目标。

非常感谢。我需要在win32 c ++中使用它。 [没有.NET或MFC] 赞赏。

1 个答案:

答案 0 :(得分:7)

发信人:

  1. 您有HBITMAP
  2. 使用GetObject
  3. 获取其属性,例如宽度和高度
  4. 使用CreateDIBSection创建另一个HBITMAP相同分辨率的24/32位RGB,其中VOID*指针指向原始字节;您将在代码中初始化BITMAPINFOHEDER - 您应该已经拥有该点所需的所有数据
  5. BitBlt从原始位图到此
  6. 将帮助位图数据指针的BITMAPINFOHEDER +字节发送到网络(sizeof BITMAPINFOHEDER + BITMAPINFOHEDER::biSizeImage字节)
  7. 接收器:

    1. 使用CreateDIBSection使用您收到的BITMAPINFOHEDER创建位图;你又得到一个指向原始数据的指针
    2. memcpy将图像数据放入给定指针下的内存位置,或者只是逐步接收数据
    3. 您再次HBITMAP