Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

TBitmap и Array of Byte   Найти похожие ветки 

 
V   (2009-11-05 20:27) [0]

Добрый вечер всем :)
Есть Array of Byte, в котором битмап картинка. Данные в массиве правильные.

hfile:=CreateFile(PChar("c:\111.bmp"),GENERIC_WRITE, FILE_SHARE_READ, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
if hFile<>INVALID_HANDLE_VALUE then
begin
  WriteFile(hFile,buf[0],Length(buf),NumWritten,nil);
  CloseHandle(hfile);
end;


Выдает в c:\111.bmp валидную картинку, битмап.

Вопрос: как бы так чудесно сделать, чтобы в
bmp:TBitmap оказались эти байтики, чтобы с этим bmp можно было работать дальше?

bmp:=TBitmap(buf) приводит к катастрофе масштаба гибели приложения.


 
Rendal ©   (2009-11-05 20:46) [1]

Если я правильно понял, попробуй так:

 bmp.LoadFromStream(buf);


З.Ы. Это если buf:Tfilestream (т.е буфер)


 
V   (2009-11-05 21:05) [2]

buf это Array Of Byte, динамический...
bmp.LoadFromStream(buf); не то...


 
@!!ex ©   (2009-11-05 21:18) [3]

> [2] V   (05.11.09 21:05)

TMemoryStream спасет ОРД.


 
V   (2009-11-05 21:38) [4]

@!!ex
Спасибо :) Спасло :)
Интересуют еще методы решения данной задачи..


 
@!!ex ©   (2009-11-05 21:42) [5]

> [4] V   (05.11.09 21:38)

Прочитать заголовок, узнать BPP, размер
и самому ручками запихать в ScanLine.
Только это геморно. Потому что нужно выравнивание учитывать и прочие неприятные мелочи


 
Anatoly Podgoretsky ©   (2009-11-06 09:53) [6]

А bmp.LoadFromFile рассматривать не стоит? Хотя это самый прямой путь;


 
VS   (2009-11-06 13:29) [7]

Нет.. в буфере находится последовательность байтиков, в этой последовательности затесались джипеги, текст, пнг, битмапы, гифы.. и известно лишь только то, откуда начинается и где заканчивается "файл" в буфере)

Зачем же весь этот хлам попадает в буфер да так, чтобы все подряд шло?
Ну.. мне так захотелось)) Я подумал, что скоростнее в процессе работы программы выдрать нужный "контент" из памяти, нежели обращаться к диску (особенно если это флешка и часто программа требует в разных местах этот "контент"). Сейчас просто загрузил все что нужно при старте программы, и потом приятно работаешь :)


 
RWolf ©   (2009-11-06 14:45) [8]

Штатный механизм загрузки компонентов в Delphi: AStream.LoadComponent(MyComponent);
Загружаемые классы должны быть зарегистрированы: RegisterClass(TJpegImage);



Страницы: 1 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-1231775144
Игорь_Залозных
2009-01-12 18:45
2009.12.27
Вывод очень длинной строки


15-1256615376
d@nger
2009-10-27 06:49
2009.12.27
Cisco и модем


15-1256342365
POOP
2009-10-24 03:59
2009.12.27
Простое проектирование схем


1-1231859045
Игорь_Залозных
2009-01-13 18:04
2009.12.27
DrawText и текст, который не вместился в прямоугольник


15-1256372721
POOP
2009-10-24 12:25
2009.12.27
Paint.Net залитый прямоугольник