Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.005 c
2-1257865044
monyk
2009-11-10 17:57
2009.12.27
Время в delphi


2-1257749650
Alex_C
2009-11-09 09:54
2009.12.27
Скрыть кнопку на панели задач


2-1257871099
vtur
2009-11-10 19:38
2009.12.27
Создание приложений с использованием DLL


2-1257351706
_
2009-11-04 19:21
2009.12.27
Узнать информацию о видеокарточке.


15-1256416210
Юрий
2009-10-25 00:30
2009.12.27
С днем рождения ! 25 октября 2009 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский