Вопрос

Прошу помочь мне с этой проблемой:

Есть байтовый массив (data: PByte), содержащий данные DIB И DIBHeader:

родовое слово

Как преобразовать DIB в TBitmap, сохраняя при этом низкую загрузку ЦП?

Я пробовал http://files.codes-sources.com/fichier.aspx?id=43989&f=GdipApi.pas безуспешно.

Я назначил DIB потоку памяти:

родовое слово

Полагаю, должен быть заголовок DIB, написанный где-то перед Bitmap.LoadFromMemoryStream (DibMemStream).Не знаю где.

Есть идеи, пожалуйста?

Спасибо!

Это было полезно?

Решение

Я использовал следующую схему для преобразования изображений в памяти в TBitmap:

1) Заполните структуру TBMPHeader

родовое слово

2) Записать данные BMPHeader + изображения в MemoryStream

3) Загрузить TBitmap из MemoryStream с помощью TBitmap.LoadFromStream

Кажется, у вас уже заполнена структура bmiHeader.Добавьте bmfHeader и (возможно) bmiColors.

Вот код, который я использовал для преобразования 256-цветных изображений в градациях серого в памяти в TBitmap (много лет назад, извините, подробностей нет):

родовое слово

Другие советы

Прошло много времени с тех пор, как я кодировал Delphi, и я не мог это проверить, но если вы можете предоставить дескриптор DIB, есть функция hDIBToTBitmap1 (), которая должна помочь вэта ссылка:

http://www.efg2.com/Lab/Library/Delphi/Graphics/LeadToolsConversions.TXT

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top