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

Вниз

Массив байт в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
15-1236238528
ford
2009-03-05 10:35
2009.05.10
модераторам ветки


3-1219412270
Курдль
2008-08-22 17:37
2009.05.10
PL/SQL Цикл по полям.


2-1238076003
igorntk
2009-03-26 17:00
2009.05.10
Как запретить дублирование данных в поле таблицы?


3-1220449344
мини-кодер
2008-09-03 17:42
2009.05.10
Открытие/закрытие транзакции


2-1238427650
Brauberg
2009-03-30 19:40
2009.05.10
Поиск и запись в строке