Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Чтение дополнительных свойств файла


Автор: saneea 3.9.2010, 14:36
В фотографиях или аудиофайлах есть дополнительная информация ("дата съёмки", "модель камеры" и т.д. - для фото, "исполнитель", "название трека" и т.д. для аудио). Есть ли какая-то возможность читать эти свойства файла?

Автор: jk1 3.9.2010, 23:12
Всегда есть возможность прочитать такие вещи руками из любого формата. Вот, например, mp3: тут стоит выделить 2 стандарта записи метаданных ID3v1 и ID3v2. Для первого можно воспользоваться таблицей смещений:

Field              Length    Offsets
 Tag                   3           0-2
 Songname       30          3-32
 Artist                30         33-62
 Album               30         63-92
 Year                   4          93-96
 Comment          30         97-126
 Genre                 1           127

ID3v2 парсить руками уже сложнее, впрочем для это есть библиотека JID3. http://jid3.blinkenlights.org/samples.html.

И так вот для каждого формата. Универсального решения, боюсь, нет.

Автор: kkorsakoff 5.9.2010, 11:35
Если речь идет об изображениях, вам поможет ImageIO, в ней есть возможность читать метаданные. Но опять же все зависит от конкретного формата. Для TIFF все просто, все теги и их значения легко считываются и записываются. С JPEG придется повозиться, данные EXIF (а это как раз модель камеры, фокусное расстояние и прочие атрибуты) выдаются в виде byte[].
Но если поискать http://www.google.ru/search?aq=f&sourceid=chrome&ie=UTF-8&q=java+EXIF, то решение тоже есть.

Автор: saneea 5.9.2010, 20:03
Да, мне нужна информация именно из изображений. Просто я думал что нет разницы jpeg или mp3. Теперь я знаю, что нужно искать "EXIF". Но что-то я не могу найти как с этим всем работать. Нашёл страничку http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/tools/jpeg/Exif.html, но так и не понял, откуда взять эти класс. Документация есть, класса нет...

Автор: jk1 5.9.2010, 20:21
saneea,  http://www.java2s.com/Open-Source/Java-Document/Web-Server/Jigsaw/org/w3c/tools/jpeg/Exif.java.htm, этот класс.


Чуть не забыл, у него http://www.java2s.com/Open-Source/Java-Document/Web-Server/Jigsaw/org/w3c/tools/jpeg/ExifData.java.htm.

Автор: saneea 8.9.2010, 09:23
Ок, всё работает. Правда выдаёт тэги в виде пар ":unknown0x9004=1988:03:07 09:12:59". Но как я понял, это стандартизировано... То есть мне важно, чтоб тот же тег ":unknown0x9004" на JPEG'е с другого источника, тоже имел смысл "дата снимка".
И ещё вопросец... Какие условия использования http://www.java2s.com/Open-Source/Java-Document/Web-Server/Jigsaw/org/w3c/tools/jpeg/Exif.java.htm?

Автор: jk1 8.9.2010, 10:00
Цитата

То есть мне важно, чтоб тот же тег ":unknown0x9004" на JPEG'е с другого источника, тоже имел смысл "дата снимка".

http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
Цитата

Какие условия использования этого класса и классов, от которых он зависит? 

Не понял о каких условиях идет речь? Вы же сами пишете, что смогли добраться до тегов, да и JavaDoc подробные там есть. Если же вас интересует лицензия, то видимо http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.

Автор: saneea 8.9.2010, 14:24
Цитата

Вроде бы на это можно полагаться.


Спасибо!

Цитата

Не понял о каких условиях идет речь? Вы же сами пишете, что смогли добраться до тегов, да и JavaDoc подробные там есть. Если же вас интересует лицензия, то видимо это она.

Да, интересует лицензия. Правда, почитав её так и не понял что могу делать, а что нет. Но это уже моя беда.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)