Форум: "Начинающим";
Текущий архив: 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