Форум: "Прочее";
Текущий архив: 2011.07.17;
Скачать: [xml.tar.bz2];
ВнизКак лучше записать несколько TBitmap в один файл Найти похожие ветки
← →
Baks (2011-04-01 16:53) [0]Подскажите, как лучше записать несколько TBitmap в один файл. У них разные размеры. А ещё, в этот же файл нужно записать названия этих картинок (String).
← →
clickmaker © (2011-04-01 16:54) [1]SaveToStream
← →
w (2011-04-01 16:57) [2]tstream
друг за дружкой.
заголовок в котором размер битмапа и строки, пишем битмап, строку. Опять заголовок и тд
← →
Kerk © (2011-04-01 16:58) [3]В zip положи, чего велосипед изобретать :)
← →
Baks (2011-04-01 17:11) [4]Правильно я понял, что лучше подойдёт TFileStream? Здесь пока без заголовков.
procedure Button1Click(Sender: TObject);
const
FName = "MyFile.dat";
var
Bmp: TBitmap;
FStream: TFileStream;
begin
Bmp := TBitmap.Create;
try
Bmp.Assign(Image1.Picture.Bitmap);
FStream := TFileStream.Create(ExtractFilePath(Application.ExeName) + FName, fmOpenWrite);
try
// FStream.Seek(0, soFromEnd);
Bmp.SaveToStream(FStream);
finally
FStream.Free;
end;
finally
Bmp.Free;
end;
end;
А как правильно узнать нужный размер для каждого TBitmap (Для заголовков)?
> В zip положи
А как? Для этого ведь спец. компоненты нужны? У меня D5.
← →
w (2011-04-01 17:24) [5]еще один стрим ИТОГОВЫЙ в котрый ты будешь писать из первого. FStream TMemoryStream.
> А как? Для этого ведь спец. компоненты нужны? У меня D5.
не нужны. ищи код в гугле
← →
clickmaker © (2011-04-01 17:35) [6]> как правильно узнать нужный размер для каждого TBitmap (Для
> заголовков)?
можно не размер писать, а смещение для каждого (Stream.Position) в общий заголовок.
← →
Baks (2011-04-01 18:00) [7]Я вот тут ещё ZipTV скачал: http://www.ziptv.com/productinfo.htm
> смещение для каждого (Stream.Position) в общий заголовок.
Так наверно лучше. Заголовок с позициями, которые получены во время записи.
← →
w (2011-04-01 18:06) [8]
> Так наверно лучше. Заголовок с позициями, которые получены
> во время записи.
я бы сделал так. подсчитал общее колво записей, создал общий заголовок, записал, и для каждой записи свой заголовок. Так проще имхо
← →
Baks (2011-04-01 18:18) [9]
> w (01.04.11 18:06) [8]
Ну да. Сначала все заголовки.
> Я вот тут ещё ZipTV скачал.
Ёёёё, так он платный оказывается.
← →
Германн © (2011-04-01 18:25) [10]
> Ёёёё, так он платный оказывается.
>
http://rouse.drkb.ru/files/fwzip.zip - этот бесплатный.
← →
Rouse_ © (2011-04-01 19:25) [11]Вариантов на самом деле много, от самостоятельного формирования заголовка и записи всех данных в плоский стрим, до использования сторонних движкох реализующих данный метод (ака SimpleDBase :), можно посмотреть так-же в сторону составных хранилищ (IStorage/IStream) там они за тебя все отформатируют как надо, но самый оптимальный конечно-же будет ZIP, помимо автоматической генерации оффсетов на данные он их еще и пожмет, двойная выгода панимашь :)
ЗЫ: Германн, ссылочку лучше такого вида давать :)
http://rouse.drkb.ru/components.php#fwzip
← →
Германн © (2011-04-01 19:26) [12]
> Германн, ссылочку лучше такого вида давать
ОК
← →
Baks (2011-04-01 20:22) [13]Спасибо, попробую.
← →
w (2011-04-01 21:08) [14]
> можно посмотреть так-же в сторону составных хранилищ (IStorage/IStream)
> там они за тебя все отформатируют
тьфу какая гадость
← →
Rouse_ © (2011-04-01 21:19) [15]
> w (01.04.11 21:08) [14]
> тьфу какая гадость
Согласен, ограничения есть, но в простых вариантах хранилища использовать очень даже не плохо. MS от них только в новом офисе отказались
← →
w (2011-04-01 21:37) [16]
> в новом офисе
тьфу какая гадость :))
← →
МазутычЪ (2011-04-02 09:34) [17]Есть такой мудрый формат - TIFF, как раз для записи нескольких графических изобажений в один файл...
← →
oldman © (2011-04-02 11:41) [18]
> несколько TBitmap в один файл
А БД это один файл?
← →
oldman © (2011-04-02 11:52) [19]Только я тебе не помощник в этом деле. Сам договаривайся. Я тебе идею выдал?
← →
DVM © (2011-04-02 11:53) [20]Лучше такой формат:
1. Сначала в файл пишется смещение до раздела индексов (до записи индексов там 0)
2. Затем пишутся сами картинки (попутно запоминаем смещения до каждой из них)
3. Пишем смещения друг за другом (индексы)
4. Правим в начале файла смещение до раздела индексов
Это самый оптимальный вариант, позволяет записать в один файл сколько угодно картинок и даже дописывать их туда.
Можно индексы и в начале разместить, но тогда надо заранее произвести подсчет и добавить после записи мы уже не сможем, если только не ввети ограничений на размер таблицы индексов и на количество картинок в файле.
← →
DVM © (2011-04-02 11:55) [21]Во многих видеоконтейнерах примерно так, индексы в конце файла.
← →
Baks (2011-04-02 22:24) [22]
> oldman [18]
Да, это наверно тоже может подойти.
> DVM © (02.04.11 11:53) [20]
Теперь попробую с индексами в конце. Я тоже об этом думал.
← →
w (2011-04-03 07:35) [23]
> У меня D5
а я всегда думал - панацея D7 )
← →
Baks (2011-04-03 20:52) [24]
> w [23]
У меня на ней давно созданные проекты с компонентами, которые только для неё. Например, DelphiX, пользуюсь, что бы там не говорили. А на D7 тоже некоторые программы создаю.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.07.17;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c