Главная страница
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.018 c
3-1232350553
Альф
2009-01-19 10:35
2009.12.27
Как отключить кеш в IB5.6 или что это было ?


15-1256236718
Kolan
2009-10-22 22:38
2009.12.27
Статья на хабаре про Делфи «создание и уничтожение объектов...»


1-1231711857
Илья_
2009-01-12 01:10
2009.12.27
Установка собственного шрифта


15-1256379385
DVM
2009-10-24 14:16
2009.12.27
Посоветуйте как лучше поступить.


2-1257592439
Rydell
2009-11-07 14:13
2009.12.27
Как в DATASET изменить Тип поля, из ftBLOB в ftGraphic, ftMemo, .