Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив 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позицию в потоке, из которого читает. Если нет, то надо это делать вручную


Наверх

Титульная страница Поиск, карта сайта Написать письмо