Delphi DIB с заголовком DIB в TBitmap
Вопрос
Прошу помочь мне с этой проблемой:
Есть байтовый массив (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