HBITMAP / BITMAP to BITMAPINFOHEADER — & gt; по сети — & gt; BITMAPINFOHEADER в HBITMAP / BITMAP

Я думаю, что название очень объяснительное, но здесь есть немного больше деталей, что я пытаюсь сделать.
В основном говорят, что у меня есть БИТМАП загружен в память.

Я хотел бы извлечь BITMAPINFOHEADER из него и добавьте его в мою структуру пакета, которая будет передаваться через сокет. *

Передача не проблема, но как только она прибудет, я бы хотел превратить его обратно в BITMAP, чтобы я мог работать с ним.

Я боролся с этим, и я искал высоко и низко без всякой удачи. Пример и список функций, которые мне понадобятся для выполнения этой задачи, будут полезны.

Большое спасибо. Мне это нужно в Win32 C ++. [нет .NET или MFC] Оценил.

2

Решение

Отправитель:

  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 снова
7

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector