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

Вниз

Формат файла.   Найти похожие ветки 

 
guav ©   (2006-10-03 18:31) [0]

Требуется изобрести формат файла.
в файл должна войти большая BMP картинка и немного других данных (в основном, массивы координат из пар Double).

Самый ленивый способ - хранить другие данные в формате dfm, картинку писать перед или после этого dfm или как ещё одно свойство этого dfm. Но мне это решение не очень нравится, т.к. оно привязано к VCL.
Данные можно записать в текстовой форме (XML) или бинарной. Вопрос также какой лучше взять общий "контейнер" для двух сущностей "картинка" или "другие данные". Просто писать подряд ? Zip ? Файл ресурсов ?

В общем, вопрос, если бы вам потом пришлось работать с моими данными с каким бы форматом вы бы были менее огорчены столкнуться ?


 
MeF Dei Corvi ©   (2006-10-03 18:34) [1]

Не вижу проблемы. Требуется изобрести - сделай. Судя по тому, что там будет картинка, формат будет бинарный.


 
TUser ©   (2006-10-03 18:34) [2]

У тебя нет ограничений - выбирай любой способ, лишь бы работало. Имхо.


 
Kolan ©   (2006-10-03 18:36) [3]

Может *.doc?


 
Gero ©   (2006-10-03 18:41) [4]

Просто записать подряд в бинарный файл. Зачем еще xml приплетать?


 
guav ©   (2006-10-03 18:41) [5]

> У тебя нет ограничений - выбирай любой способ, лишь бы работало.
> Имхо.

Я понимаю.
Но вот такой формат предыдущей проги.

// формат файла старой программы выявлен опытным путём.
// это - массив записей, по записи на каждую точку,
// последняя запись дублируется. Запись слеующего вида:
type
 TObjRecord = packed record
   PtName: array[0..15] of Char;
   GeoX, GeoY: Double;
   Junk: array[0..7] of Byte;
 end;
// , где PtName - подпись, лишние элементы - пробелы.
// GeoX, GeoY - координата.
// Junk - заполняется иногда "мусором",
// иногда нулями, при открытии файла в Pmag1.exe
// видимо игнорируется, при сохранении пишет
// в элементы 0..3 нули, в 4..7 - что-то очень
// похожее на указатель.


Оказался неудобным и заставил долго экспериментировать с ней, чтобы его выяснить.

Не хочу повторять ошибок.


 
Virgo_Style ©   (2006-10-03 18:42) [6]

вероятно, в лоб - <допольнительные данные><поток>.
поток - bmp или jpg. Если допустим jpg - то посмотрел бы в сторону тэгов, или как из у jpeg"а зовут - нельзя ли там создать свой собственный служебный массив.


 
Ученик чародея.   (2006-10-03 18:44) [7]


> guav ©   (03.10.06 18:31)  
> Требуется изобрести формат файла.
> в файл должна войти большая BMP картинка и немного других
> данных (в основном, массивы координат из пар Double).
>
> Самый ленивый способ - хранить другие данные в формате dfm,
>  картинку писать перед или после этого dfm или как ещё одно
> свойство этого dfm. Но мне это решение не очень нравится,
>  т.к. оно привязано к VCL.
> Данные можно записать в текстовой форме (XML) или бинарной.
>  Вопрос также какой лучше взять общий "контейнер" для двух
> сущностей "картинка" или "другие данные". Просто писать
> подряд ? Zip ? Файл ресурсов ?


Zip и тематические подкаталоги внутри. Возможно в корне zip xml файл с описанием.

Abbrevia(Delphi компонент) работает с zip.


 
Gero ©   (2006-10-03 18:44) [8]

Формат достаточно документировать, и ничего выяснять не надо будет.


 
MeF Dei Corvi ©   (2006-10-03 18:44) [9]


> чтобы его выяснить.

Что значит выяснить формат, если он жетко задан тобой же?


 
Ученик чародея.   (2006-10-03 18:44) [10]

В общем так почти все файлы ресурсов игрушек сделаны. расширение файла конечно лучше свое придумать.


 
Gero ©   (2006-10-03 18:45) [11]

> [7] Ученик чародея.   (03.10.06 18:44)

Зачем такой огород городить?


 
guav ©   (2006-10-03 18:45) [12]

> [4] Gero ©   (03.10.06 18:41)


> Просто записать подряд в бинарный файл. Зачем еще xml приплетать?


Это просто для одной версии, но неудобно если в программе периодически появляются абсолютно новые сущности.

С xml парсером работать несложно, а данных немного, почему бы не приплести ?


 
MeF Dei Corvi ©   (2006-10-03 18:47) [13]


> С xml парсером работать несложно

С потоками ввода работать сложнее?


 
guav ©   (2006-10-03 18:48) [14]

> Что значит выяснить формат, если он жетко задан тобой же?


Новый - да.
Старый - связан со старыми программами для которых и автор и исходники утеряны, воти пришлось ковырять.


 
Virgo_Style ©   (2006-10-03 18:49) [15]

guav ©   (03.10.06 18:45) [12]
Это просто для одной версии, но неудобно если в программе периодически появляются абсолютно новые сущности.


Если так, то что-то вроде
<Имя блока><размер><содержимое блока>
<Имя блока><размер><содержимое блока>
<Имя блока><размер><содержимое блока>

imho.


 
Kolan ©   (2006-10-03 18:50) [16]

Мое имхо - только популярные форматы, если это возможно.


 
guav ©   (2006-10-03 18:50) [17]

> Zip и тематические подкаталоги внутри. Возможно в корне
> zip xml файл с описанием.

Идея эта мне нравится. Без тематических каталогов можно обойтись, т.к. всего две сущности - картинка и другие данные. Но останавливает это:

> Зачем такой огород городить?


 
ferr ©   (2006-10-03 18:52) [18]

я бы пользовал xml, и только.


 
guav ©   (2006-10-03 18:53) [19]

> [16] Kolan ©   (03.10.06 18:50)


> Мое имхо - только популярные форматы, если это возможно.

что значит "только популярные форматы" ?
данные - специфичные для программы.
форма представления - об этом и вопрос.


 
guav ©   (2006-10-03 18:54) [20]

> я бы пользовал xml, и только.

Нужно хранить ещё и BMP. Или предлагаешь её тоже в xml ?


 
Gero ©   (2006-10-03 18:57) [21]

> [20] guav ©   (03.10.06 18:54)

Конечно можно.


 
ferr ©   (2006-10-03 18:58) [22]

> Нужно хранить ещё и BMP.

это уже хуже)
> Или предлагаешь её тоже в xml ?

зависит от размеров BMP.


 
Kolan ©   (2006-10-03 18:59) [23]


> "только популярные форматы" ?

Можешь сделать на Xml, который знаешь ты и еще тысячи людей, сделай. А своё изобретать - рыть себе яму в будующем.

Пример: попросили открыть файл вида:

1200
2015
1232
5443
-5433
-4552
2456


Что это за числа? Какие сдесь данные?

Точки в виде:
X
Y

Или:
X
Y
Z

Вот что такое "изобретенный" формат.


 
guav ©   (2006-10-03 19:01) [24]

> Конечно можно.

Ну да. Но, опять таки, нужно ли ?
Вот ты предлагаешь ни xml ни dfm а воообще бинарные данные подряд. Этот подход имеет свои преимущества.

Меня интересуют различные мнения. Можете считать это опросом.


 
guav ©   (2006-10-03 19:03) [25]

> [23] Kolan ©   (03.10.06 18:59)

Вот... я тоже с таким столкнулся.. в общем ты меня понял.
Собственно это и побудило создать ветку, а не делать как в данный момент на ум пришло.


 
Agent13 ©   (2006-10-03 19:07) [26]

Кстати, по поводу зип-архива - по этому пути пошёл даже Microsoft. Ведь  файлы, созданные Microsoft Office 2007 - docx, xlsx, pptx и т.д. представляют собой не что иное как зип-архив, в котором сожержится несколько xml-файлов. Так что есть на кого равняться :)


 
Джо-со-смарта   (2006-10-03 19:07) [27]

Я бы выбрал 2 файла, картинка и данные - отдельно. Данные - в текстовом виде. Собственно, у меня таких "форматов" несколько, используются пару лет. Недостатков не обнаружил :-)


 
ferr ©   (2006-10-03 19:09) [28]

> от... я тоже с таким столкнулся.. в общем ты меня понял.

После того как пару раз приходилось незапланированно масштабировать данные, почти все данные теперь у меня хранятся в xml).
> Ведь  файлы, созданные Microsoft Office 2007 - docx, xlsx,
> pptx и т.д. представляют собой не что иное как зип-архив,
> в котором сожержится несколько xml-файлов

Мамма мия) Они всегда найдут как сделать тоже самое в разы медленнее...


 
Oldman ©   (2006-10-03 19:14) [29]


> Требуется изобрести формат файла.
> в файл должна войти большая BMP картинка и немного других
> данных (в основном, массивы координат из пар Double).


БСК!!! Читай [27]


 
guav ©   (2006-10-03 19:14) [30]

> [27] Джо-со-смарта   (03.10.06 19:07)

Тоже вариант. Но желательно одним куском. Дело в том что картинка читается из уже созданного BMP файла и никогда не редактируется. Но чтобы не потерять её, лучше запихнуть в файл.


> [26] Agent13 ©   (03.10.06 19:07)

И картинки, и объекты тоже, получается, в XML пихают ?
Если не трудно, пришли пожалуйста небольшой  образец на Format("%s@%s.%s", ["guav", "ukr", "net"])


 
Джо-со-смарта   (2006-10-03 19:17) [31]

Удобно,, например, тем, что картинку можно обрабатывать отдельно, любым другим софтом.


 
guav ©   (2006-10-03 19:24) [32]

> > Или предлагаешь её тоже в xml ?
>
> зависит от размеров BMP.

От сотен кил до нескольких мег.


> Удобно,, например, тем, что картинку можно обрабатывать
> отдельно, любым другим софтом.

Картинка уже есть отдельно и с ней ничего делать не надо.

Как бы результаты опроса:

данные:
текст            Джо, Oldman
xml              Kolan, Ученик чародея, ferr, Agent13
бинарник         MeF Dei Corvi, Gero, Virgo_Style
dfm
всё равно        TUser

котнейнер:
zip             Ученик чародея, Agent13
просто подряд   Gero, Virgo_Style
отдельно!       Джо, Oldman


 
Ученик чародея.   (2006-10-03 19:26) [33]


> guav ©   (03.10.06 18:50) [17]
> > Zip и тематические подкаталоги внутри. Возможно в корне
>
> > zip xml файл с описанием.
>
> Идея эта мне нравится. Без тематических каталогов можно
> обойтись, т.к. всего две сущности - картинка и другие данные.
>  Но останавливает это:
>
> > Зачем такой огород городить?


Тем что на Delphi это сделать проще, чем нарисовать иконку к своей программе, на иконку уйдет времени больше.

Так сделаны пакеты Jar - java программы.


 
MeF Dei Corvi ©   (2006-10-03 19:30) [34]


> бинарник         MeF Dei Corvi

Ну вообще я за картинку отдельно, данные отдельно. Так редактировать удобнее (данные в xml). При желании можно и в zip упаковать. В зависимости от задачи.


 
Ломброзо ©   (2006-10-03 19:31) [35]

Покурите про медицинский стандарт DICOM - он как раз и разработан для хранения растровых изображений с координатами для выделения и подписывания каких-то областей


 
ferr ©   (2006-10-03 19:32) [36]

Всё-таки я против того чтобы в xml толкать картинку. Она всё же слишком большая, будут очень ощутимые тормоза..
Моё мнение такое :
zip
{
 image(s);
 ...
 mainXML; // в нём название файла и другая координационная информация(если необходима)
}


 
guav ©   (2006-10-03 19:40) [37]

> Тем что на Delphi это сделать проще, чем нарисовать иконку
> к своей программе, на иконку уйдет времени больше.

Иконка уже есть :-)
А расширение всё равно своё будет

Я не про сложность реалиации, а про сложность самой программы.


> [35] Ломброзо ©   (03.10.06 19:31)

Очень интересно, спасибо, покурю.


 
Kerk ©   (2006-10-03 19:40) [38]

Я за zip
Вообще можно было б написать класс - аналог TIniFile, но работающий с zip-хранилищем


 
Agent13 ©   (2006-10-03 19:44) [39]


> И картинки, и объекты тоже, получается, в XML пихают ?
> Если не трудно, пришли пожалуйста небольшой  образец на
> Format("%s@%s.%s", ["guav", "ukr", "net"])

Отослал. Но картинки они в xml не пихают :) Они лежат в нормальном виде в подкаталоге media. Объекты - в embeddings. Так что судя по всему в xml  только текст и настройки.


 
VEG ©   (2006-10-03 19:57) [40]

AbiWord имеет свой формат документа, основанный на XML. Так вот картинки он хранит в самом XML в кодировке base64


 
Yanis ©   (2006-10-03 20:06) [41]

Может кто-то и предлагал...


> guav ©   (03.10.06 18:31)

А может использовать структурированные хранилища? (Structured Storage)


 
Ученик чародея.   (2006-10-03 20:37) [42]


> guav ©   (03.10.06 19:40) [37]
> > Тем что на Delphi это сделать проще, чем нарисовать иконку
>
> > к своей программе, на иконку уйдет времени больше.
>
> Иконка уже есть :-)
> А расширение всё равно своё будет
>
> Я не про сложность реалиации, а про сложность самой программы.


Если сделать через классы с грамотным наследованием, то будет не сложнее чем изменение элемента массива.

PS
В файл формата можно еще пихать description.txt с описанием формата своих данных. Это уже будет ультимативная открытость формата :)

PS2
А я вот нечто подобное через ini файл вот делаю.


 
Marser ©   (2006-10-03 21:09) [43]

Ты, часом, не ozf свой писать удумал? :-)


 
TUser ©   (2006-10-03 21:17) [44]

Кстати, встенографировать в bmp свои double не хочешь? Типа, против хакеров. :))


 
wicked ©   (2006-10-03 21:17) [45]

вариантов куча:
1) Structured Storage - плавали, знаем - достаточно неплохо, если не выходить за базовые возможности
2) zip; а лучше - pak - тот же zip, только без сжатия, формат позволяет
3) SQLite - хранить в блобах

сейчас, кстати, я бы выбрал вариант 3 - уж очень много преимуществ имеет :)


 
wl ©   (2006-10-03 21:59) [46]

кпк-шный книжный формат FB2 (Fiction Book 2) тоже хранит картинки (а заодно и форматированный текст) внутри XML-файла.


 
guav ©   (2006-10-03 22:02) [47]

> [35] Ломброзо ©   (03.10.06 19:31)


> Покурите про медицинский стандарт DICOM

Попробовал посмотреть на http://medical.nema.org/dicom/2006/
Возможно он подошел бы, однако, размер описаний впечатляет.
Слишком долго его придётся курить.


> [43] Marser ©   (03.10.06 21:09)

> Ты, часом, не ozf свой писать удумал? :-)


1. Программа уже написана и работает, только сохранения нет.
2. Что такое ozf ?


> [44] TUser ©   (03.10.06 21:17)


> Кстати, встенографировать в bmp свои double не хочешь? Типа,
> против хакеров. :))

нет, такого не надо :)


> [41] Yanis ©   (03.10.06 20:06)


> [45] wicked ©   (03.10.06 21:17)


> Structured Storage


Какие преимущества у этого варианта перед зипом ?


> [45] wicked ©   (03.10.06 21:17)


> 2) zip; а лучше - pak - тот же zip, только без сжатия, формат
> позволяет

попробовал зазиповать тестовые картинки... нет лучше таки зип, бо уж сильно хорошо сжимаются.


 
guav ©   (2006-10-03 22:05) [48]

> [46] wl ©   (03.10.06 21:59)

И OpenOffice тоже, и вообще тендеция.
Сейчас тоже склоняюсь к такому варианту.


 
Ломброзо ©   (2006-10-03 22:13) [49]

guav ©   (03.10.06 22:02) [47]

Google Delphi+DICOM
Результаты 1 - 10 из примерно 80 500 для Delphi DICOM


 
Ломброзо ©   (2006-10-03 22:17) [50]

Хотя, возможно, я что-то путаю. Припоминаю, что в одной знакомой мне радиологической информационной системе координаты каких-то областей лежали таки в БД


 
Слон ©   (2006-10-03 23:57) [51]


> Virgo_Style ©   (03.10.06 18:42) [6]

действительно, если формат графики допускает тэги, то хранить в них все необходимые данные - самый удобный и быстрый вариант.


 
Yanis ©   (2006-10-04 09:54) [52]


> Какие преимущества у этого варианта перед зипом ?

Это что то наподобии файловой системе в файле.
Ничего не запаковывается и не распаковывается, следовательно затрачивается меньше времени на доступ к инфе.
Поддерживается на уровне Windows, не юзаются сторонние библиотеки.
Можно использовать (кажется) во всех версиях Windows.
Не нужно разрабатывать фой формат файла =)


 
Marser ©   (2006-10-04 15:49) [53]

> 2. Что такое ozf ?

Про Ozi Explorer слыхал? Это программа для работы с картами, в частности для GPS. Так вот, его формат, ozf это, грубо говоря, то что ты описал.


 
guav ©   (2006-10-05 00:09) [54]

> [50] Ломброзо ©   (03.10.06 22:17)

Спасибо. Поискал получше, нашел пример чтения. Нашел также краткие описания.
Всё равно, стандарт достаточно сложный и он реализует понятия, которые к моему случаю не применимы. Насколько я понял, главная его цель - достижение полной совместимости между различным медицинским оборудованием, а т.к. с медицинским оборудованием в моём случае работать точно не придётся, вряд ли мне стоит использовать этот формат.

> [51] Слон ©   (03.10.06 23:57)

Изображения уже давно только BMP, поддержку других форматов никто не требовал.
В формате BMP нет специальных полей для комментариев (хотя можо попытаться писать в конце или между заголовками и пикселями).
В любом случае, вариант с тэгами мне не очень нравится. Пусть лучше или каринка отдельно, или не открывается в других программах напрямую.


> [52] Yanis ©   (04.10.06 09:54)

Ничего существенного не вижу:
В зипе тоже система с фалами и даже папками.
Зип тоже не обязательно паковать. Постоянный быстрый доступ к файлу не требуется.
Скорее, отсутствие встроенного в формат сжатия я бы рассматривал как недостаток.
Для зипа существуют библиотеки, в т.ч. с исходниками и не требующие внешних файлов, поэтому отсутствие поддержки на уровне windows не проблема.
Отталкивает от рассмотрения этого варианта то, что MS Office, ранее использовавший Structured Storage , теперь тоже перешел на зип.


> [53] Marser ©   (04.10.06 15:49)

Что-то мне не удалось найти описание формата, потому вопросы:
Ты работал с этим форматом ?
Если да, то:
Он открыт или работа через SDK ? Где посмотреть подробнее ?



Страницы: 1 2 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.6 MB
Время: 0.036 c
3-1157042099
menart
2006-08-31 20:34
2006.10.29
объединение 3-х таблиц в одну


10-1124891616
Spose
2005-08-24 17:53
2006.10.29
Определить активный элемент в TWebbrowser


8-1143394276
VasRoG
2006-03-26 21:31
2006.10.29
Большие изображения


15-1159937308
vidiv
2006-10-04 08:48
2006.10.29
Непрерывное профессиональное обучение.


11-1128235367
Sniper17
2005-10-02 10:42
2006.10.29
А если перейти на SVN?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский