![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив jpg из файла [D2005, XP]
Wel © (2006-03-01 10:12:00)Уважаемые мастера. Можно ли загрузить массив jpg из файла, с помощью TFileStream и TMemoryStream, зная только что файл это -
4 байта сигнатуры
4 байта - длина маленькой картинки
N байт - маленькaя картинка (обычный JPEG)
4 байта - длина первой большой картинки
N байт - первая большая картинка (тоже обычный JPEG)
далее идёт контрольная сумма (что-то нестандартное, типа суммы по модулю 9) первой половины файла и оставшиеся картинки в ЗАШИФРОВАННОМ виде.
umbra (2006-03-01 15:08:00) [1]вы лучше покажите Ваш код и скажите, какого типа исключение случается. Без этой конкретной информации дальнейший разговор бесполезен
Wel (2006-03-01 14:51:00) [2]И не получится его открыть?
umbra (2006-03-01 12:39:00) [3]нет значит такого файла. или доступа к нему нет.
Wel (2006-03-01 12:35:00) [4]Уважаемые профи. не получается открыть файл. Пишет "Stream read error".
Ega23 (2006-03-01 11:11:00) [5]
> надо это делать вручную
Уже несколько раз натыкался на то, что лучше Stream.Position ставить вручную.
umbra (2006-03-01 10:57:00) [6]
var
fs: TFileStream;
ms: TMemoryStream;
cur_size: Integer;
{..................................................................}
fs := TFileStream.Create('myfile', fmOpenRead);
fs.Seek(4, soFromCurrent); //пропускаем сигнатуру
fs.ReadBuffer(cur_size, 4); //читаем размер
ms := TMemoryStream.Create;
ms.CopyFrom(fs, cur_size); //копируем картинку в MemoryStream
Единственное, в чем я не уверен - сдвигает лиCopyFromпозицию в потоке, из которого читает. Если нет, то надо это делать вручную