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


Автор: Dr Smth 9.8.2006, 17:42
В свойствах jpeg-изображения можно найти вкладку "Сводка", на которой хранится информация о файле: Название, Тема, Автор, Категория, Ключевые слова, Комментарий. По-видимому, это что-то типа тэгов файла. Но как их можно прочитать (изменить) из Delphi?

Автор: Alexeis 9.8.2006, 18:12
Цитата(Dr Smth @  9.8.2006,  17:42 Найти цитируемый пост)
 Но как их можно прочитать (изменить) из Delphi?

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

Автор: Dr Smth 9.8.2006, 18:32
В Windows XP эта информация есть у любого JPG-файла, вне зависимости от приложения, которое его создало. Поменять эти тэги можно вручную через сам Windows. Неужели нет никаких функций, которые могли бы сделать это программно?

Автор: _hunter 9.8.2006, 18:47
функций нету (ибо нафик нада?)
вот:
http://www.media.mit.edu/pia/Research/deepview/exif.html
дока

Автор: Alexeis 9.8.2006, 22:24
Спасибо за доку _hunter

Ну вот пожалуйста как я и говорил
Цитата

The marker 0xFFE0~0xFFEF is named "Application Marker", not necessary for decoding JPEG image. They are used by user application. For example, older olympus/canon/casio/agfa digicams use JFIF(JPEG File Interchange Format) for storing images. JFIF uses APP0(0xFFE0) Marker for inserting digicam configuration data and thumbnail image.

Тут может быть что угодно.

Цитата

Also Exif uses an Application Marker for inserting data, but Exif uses APP1(0xFFE1) Marker to avoid a conflict with JFIF format. Every Exif file formats starts from this format;


Часть компаний использует этот сегмент для внедрения своего подсегмента Exif не стандартизированого 
"INFORMATION  TECHNOLOGY –DIGITAL  COMPRESSION  AND  CODING OF  CONTINUOUS-TONE  STILL  IMAGES – REQUIREMENTS  AND  GUIDELINES".

Этот подсегмент есть далеко не во всех картинках, но содержит как раз ту инфу которая нужна.

Добыть ее несложно найдя нужный сегмент, и перейдя по нужному смещению.

Если такой сегмент отсутствует XP его дописывает

Автор: Snowy 10.8.2006, 09:32
Поиск по слову EXIF: http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=19c76db37c72dde42531829303cb0bb8&search_in=posts&result_type=topics&flag=search&debug=&highlite=exif&skipped=

Автор: Dr Smth 11.8.2006, 15:01
Я нашёл тут один модуль, который считывает EXIF-информацию, но у него какие-то проблемы с русскими символами:
http://mcguirez.homestead.com/downloads.html.
Сам я не потяну решение данной задачи. Так что помогите, господа опытные программисты. Упростим задачу: к примеру я через свойства файла зашёл на вкладку Сводка и написал какое-то Название. Как прочиталь (или изменить) эту строчку названия программно? /На примере этого одного тега/.
Про маркеры я читал и совершенно запутался (их так много)...

Автор: Alexeis 11.8.2006, 15:35
Цитата(Dr Smth @  11.8.2006,  15:01 Найти цитируемый пост)
 но у него какие-то проблемы с русскими символами:
 насколько я помню, там ASCII кодировка применяется. 
Цитата(Dr Smth @  11.8.2006,  15:01 Найти цитируемый пост)
Про маркеры я читал и совершенно запутался (их так много)...

Про них ничего такого знать не надо. НАчинаются они с $FF, второе число его идентификатор, дальше два байта в обратном (для интел) поряде длина всего сегмента (без учета заголовка, но с учетом самого поля длинны). Нужный нам маркер имеет идентификатор $E1, после того как его нашли, проверяем является ли этот сегмент сегментом EXIF, по его подзаголовку, дальше определяется порядок следования старшего и ммладшего байтов в словах, так как этот подсегмент позволяет оба варианта, далее ищем нужные поля согласно описанию сегмента.
--------------------------------------------------------------------------------------------------------------------------------
Поиск по сайту дал отличный рабочий модуль с примерами, так что и выдумывать ничего не надо
Проикрепляю

--------------------------------------------------------------------------------------------------------------------------------

Прикрепление удалено так как было неполным. Ниже на один пост находится оригинальный вариант модуля с примерами

Автор: Dr Smth 12.8.2006, 12:58
dEXIF.pas отсутствует... - не работает.

Автор: Alexeis 12.8.2006, 14:03
Извини это я чуток напутал smile  Вешаю нормальный архив

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