Как преобразовать BYTE * в объект изображения gdi +? - PullRequest
2 голосов
/ 04 ноября 2008

Я хочу преобразовать BYTE * в объект gdi + Image.

Как я могу это сделать?

БАЙТ * кажется точкой Dib.

Я обнаружил, что Image имеет метод с именем Image :: FromStream (), который может помочь, Но я не могу найти никаких ссылок о том, как преобразовать BYTE * в объект IStream. Как я могу это сделать?

Заранее спасибо!

На самом деле трудно поверить, что MS предоставляет интерфейс IStream, но не предоставляет никакого класса c ++ MemoryStream, который реализует интерфейс.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2008

CreateStreamOnHGlobal возьмет HGLOBAL и даст вам указатель IStream. Вам нужно выделить достаточно памяти с помощью GlobalAlloc, а затем скопировать свой массив BYTE в HGLOBAL.

Если вы знаете, что полученные данные изображения - это GDI DIB, вы можете использовать GdipCreateBitmapFromGdiDib или соответствующий конструктор Bitmap :: Bitmap.

0 голосов
/ 04 ноября 2008

Знаете ли вы формат данных изображения, на который указывает указатель BYTE? Чтобы Image мог создавать себя из потока, данные должны быть в одном из поддерживаемых стандартных форматов изображений (GIF, PNG, JPEG и т. Д.).

Интерфейс IStream выглядит достаточно простым для реализации самостоятельно, если нет подходящего "потока памяти" или подобного.

...