2012-09-16 35 views
2

我認爲標題非常具有說明性,但是這裏有一些我想要做的更多細節。 基本上說我有一個BITMAP加載到內存中。HBITMAP/BITMAP到BITMAPINFOHEADER - >通過網絡 - > BITMAPINFOHEADER到HBITMAP/BITMAP

我想從它提取BITMAPINFOHEADER並將其添加到將通過套接字來轉移我的包結構。*

傳輸是沒有問題的,但一旦它到達我」 d喜歡將它變回BITMAP,以便我可以使用它。

我一直在爲此而苦苦掙扎,而且我搜索了高和低,沒有任何運氣。我需要實現這個功能的例子和函數列表將會很有幫助。

非常感謝。我在win32 C++中需要這個。 [沒有.NET或MFC] 讚賞。

+0

http://stackoverflow.com/questions/3539874/bitmap-transfer-using-winsock-getdibits-and-setdibits http://stackoverflow.com/questions/351464/send-bitmap-with-winsock?rq=1 – marcinj

回答

7

發件人:

  1. 你有HBITMAP
  2. 獲取它的屬性,如寬度和高度,使用GetObject
  3. 使用CreateDIBSection創建相同分辨率24位/ 32位RGB與另一個HBITMAPVOID*指向原始字節的指針;您將初始化代碼BITMAPINFOHEDER - 你應該已經有您需要通過從原始位點
  4. BitBlt到這一個
  5. 發送的所有數據的BITMAPINFOHEDER +字節的輔助位圖數據指針到網絡(sizeof BITMAPINFOHEDER + BITMAPINFOHEDER::biSizeImage字節)

接收機:

  1. 使用CreateDIBSection創建使用您收到BITMAPINFOHEDER位圖;你又指針
  2. memcpy圖像數據獲取原始數據到內存的位置給定的指針下,或只是逐步接收數據有
  3. 你有HBITMAP再次