Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.05.10;
Скачать: [xml.tar.bz2];

Вниз

Массив байт в JPEG (картинка)   Найти похожие ветки 

 
ggg111   (2009-03-26 12:29) [0]

Добрый...
получаю с устройства картинку - массив байт изображения JPEG
640х480 16 bit color
как обработать данный массив, т.е. отобразить на форме?


 
Дмитрий С   (2009-03-26 12:44) [1]

uses Jpeg

TJpegImage


 
ggg111   (2009-03-26 13:58) [2]

LoadFromStream ?

но в потоке нет заголовка JPEG
самому сделать?


 
DrPass ©   (2009-03-26 15:39) [3]


> но в потоке нет заголовка JPEG

А ты уверен, что это именно JPEG?


 
GGG111   (2009-03-26 16:28) [4]

Абсолютно уверен, потому что это написано в спецификации.


 
Сергей М. ©   (2009-03-26 16:43) [5]


> в потоке нет заголовка JPEG


Как получаешь поток ?
Иллюстрируй в коде ..


 
GGG111   (2009-03-26 16:49) [6]

InitComm;
 GetDataFromDevice;
 j := 0;
 while (True) do
 begin
     ReadFile (hComm,BigBuff[j],512,dwREaded,nil);
     if (dwreaded = 0) then break;
     inc (j,dwReaded);
 end;

 вообщем-то вот так...


 
Сергей М. ©   (2009-03-26 16:57) [7]

Что творится в GetDataFromDevice ?
Где анализ результата вызова ReadFile ?
И где тут фигурирует TStream ?


 
GGG111   (2009-03-26 17:05) [8]

GetDataFromDevice
 - запрос данных с устройства в формате JPEG разрешение 640 на 480  color 16 bit

  BigBuff : array [0..X] of Byte;

в  ответ на это получаю массив байт размером Size .
while (True) do
begin
  ....    
end;

Далее вопрос как это все дело отобразить на форме?

Да, конечно, я могу сделать

T : TMemoryStream;
T.Size := Size;
T.ReadBuffer (BigBuff,Size);

и получить Stream

(и потом естественно сразу писать в данные в Stream без буффера)


 
Сергей М. ©   (2009-03-26 17:07) [9]

Чему равен X ?
Откуда ты узнал Size ?


 
GGG111   (2009-03-26 17:08) [10]

X - получен "с потолка"

Size := GetDataFromDevice;


 
Сергей М. ©   (2009-03-26 17:21) [11]


> X - получен "с потолка"


Зашибись.
А если X, свалившийся с потолка, вдруг окажется меньше Size ? Ведь GetDataFromDevice, насколько я понимаю, возвращает полный размер данных, являющих собой полноценное JPEG-кодированное изображение, запрошенное у дивайса для передачи ?


 
GGG111   (2009-03-26 17:27) [12]

Ну поскольку вопрос то как массив отобразить на экране  я пока не заморачивался по поводу Х  он просто указан примерно 2*Size

 естественно я позабочусь о том чтобы не выйти за границу массива.
 
 BigBuff  :  array of Byte;

 ...
  Size := GetDataFromDevice;
  SetLength (BigBuff, Size + 1);


 
clickmaker ©   (2009-03-26 17:31) [13]

> как массив отобразить на экране

там что - только само изображение, без заголовка, т.е. битовая карта?


 
Сергей М. ©   (2009-03-26 17:35) [14]

Ну если GetDataFromDevice возвращает размер собственно JPEG-кодированных данных 640х480х16, то наверно заголовок придется формировать самому.


 
DVM ©   (2009-03-27 00:21) [15]


> 640х480 16 bit color

Чке то я не слышал, чтобы в JPEG был 16 бит цвет. Обычно 24 бит или 8, если он в оттенках серого. А вот чтобы 16... 16 бит бывают JPEG2000 картинки. Может это JPEG2000?


 
Тыщ ©   (2009-03-27 08:12) [16]

А можно узнать содержание массива?



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

Форум: "Начинающим";
Текущий архив: 2009.05.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
2-1238060969
Mixali4
2009-03-26 12:49
2009.05.10
Скорость передачи в сети


2-1238336247
dis12345
2009-03-29 18:17
2009.05.10
проблема с календарем


15-1236115800
Юрий
2009-03-04 00:30
2009.05.10
С днем рождения ! 4 марта 2009 среда


2-1238408880
пикассо
2009-03-30 14:28
2009.05.10
with...do


8-1194095872
Andruha25
2007-11-03 16:17
2009.05.10
DirectShow API





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский