Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c