【问题标题】: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】:

发件人:

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

接收者:

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

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 2011-12-11
    • 2013-02-23
    • 2011-06-02
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2014-08-29
    相关资源
    最近更新 更多