Главная | Оглавление книги

ExifTool: читаем и редактируем метаданные файлов


Утилита ExifTool предназначена для просмотра и редактирования метаданных большого количества форматов файлов. В первую очередь используется для просмотра и редактирования параметров съемки в файлах цифровых фотографий. Лицензия: GPL. Сайт: sno.phy.queensu.ca/~phil/exiftool/


Общие сведения

Очень многие форматы файлов кроме основного содержания имеют в себе ещё и метаданные. Эти метаданные могут в каждом конкретном случае описывать различные дополнительные параметры содержимого файла.

Наиболее известным стандартом метаданных, является стандарт EXIF (англ. Exchangeable Image File Format) — стандарт, позволяющий добавлять к различным типам файлов дополнительную информацию, описывающую условия и способы их получения, GPS координаты, авторство, комментарии и многое другое. Наиболее активно стандарт EXIF используется для фотоизображений, и практически каждый современный цифровой фотоаппарат записывает большое количество EXIF данных на каждый фотоснимок.

Рис. Кроме непосредственно изображения, цифровая фотография может включать и дополнительные метаданные

Другие форматы данных тоже могут иметь свои метаданные. Это видеофайлы, различные файлы документов — PDF, Djvu и т.д.

Просмотреть и редактировать метаданные файлов можно при помощи большого количества утилит и программ. Особо отметим консольную утилиту ExifTool как наиболее универсальный и мощный инструмент для работы с метаданными файлов.

Эта утилита работает из командной строки. Она существует для любых операционных системах — Linux, Windows, MacOS. Однако для неё есть и дополнения в виде приложения с графическим интерфейсом, как, например, Exiftoolgui для Windows.

Рис. Exiftoolgui для Windows

Ещё примером графической оболочки для ExifTool можно назвать утилиту PyExifToolGUI. (Читать подробнее о PyExifToolGUI)

Рис. PyExifToolGui

Судя по названию, утилита ExifTool в первую очередь предназначена для работы с метаданными EXIF в цифровых фотографиях. Поддерживаются форматы фотоизображений: JPEG, TIFF, PNG, DNG, NEF, PEF, CRW, JP2, CR2, MRW, ARW, SR2, ORF, RAF, и другие.

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

При этом для одних файлов доступно как чтение метаданных, так и их редактирование. А для других типов файлов доступно только чтение. Полную информацию о многочисленных возможностях утилиты ExifTool почерпнуть, выполнив, после установки программы, команду

man exiftool

В мануале будет таблица, где символами будет помечена возможность редактирования метаданных для такого типа файла. Символ (r) — метаданные только для чтения, (w) — метаданные можно с помощью ExifTool перезаписывать, (c) — метаданные можно создавать.

Рис. ExifTool. Таблица редактируемости метаданных в различных типах файлов

Некоторые примеры работы ExifTool с фотографиями

Рассмотрим несколько опций этой консольной утилиты, необходимых для базовой работы с метаданными EXIF в файлах фотоизображений, так как этот формат метаданных используется практически во всех цифровых фотокамерах. Хотя ExifTool работает и с форматами метаданных XMP, IPTC.

Чтение и редактирование тегов

Прочитать и отобразить все данные EXIF изображения.

exiftool FOTO.JPG
Рис. ExifTool

Прочитать какой-либо отдельный тег в метаданных изображения — например, информацию тега ISO.

exiftool -ISO FOTO.JPG

Показать теги, в которые возможно редактировать.

exiftool -listw FOTO.JPG

Запись значения конкретного тега EXIF в файл изображения делается через символ присваивания =.

exiftool -ISO='200' FOTO.JPG

Удаление значения конкретного тега EXIF в файле изображения делается через присваивания пустого значения.

exiftool -ISO='' FOTO.JPG

Естественно консольная утилита exiftool хороша для пакетной обработки файлов, когда один или несколько одинаковых тегов нужно записать или удалить во множестве изображений. Ниже команда запишет значение ISO во все файлы с расширением jpg в текущей папке. Символ * в имени файла — шаблон для любого имени.

exiftool -ISO='200' *.JPG

При редактировании тегов утилита создаёт рядом с новым файлом файл-оригинал с суффиксом "_original". Если этого не требуется, нужно использовать дополнительную опцию -overwrite_original.

exiftool -ISO='200' -overwrite_original *.JPG

Примечание: если же эту опцию забыли написать и ExifTool создал много архивных копий с суффиксом "_original", то удалить эти копии можно выполнив в консоли для систем Linux в текущем каталоге несложный одно-строчный скрипт:

for f in *_original ; do rm $f; done

Можно скопировать тэги из одного файла в другой. Ниже пример команды, когда тэги EXIF будут скопированы из файла FOTO.DNG в FOTO.JPG

exiftool -TagsFromFile FOTO.DNG FOTO.JPG

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

exiftool -TagsFromFile %d%f.DNG -r -ext JPG путь_к_каталогу

Название и пояснения к наиболее популярным EXIF-тегам

Чтобы не вводить каждый раз какой-либо набор тегов, их можно записать в отдельный текстовой файл. Например, набор общих тегов для любых оцифрованных снимков с фотоаппарата "Смена 8М" можно записать в виде такого текстового файла с названием, например lens8M.txt.

-n
-EXIF:LensModel=LOMO T-43 (Triplet) 40mm f/4
-EXIF:Model=Smena 8M
-EXIF:FocalLength=40
-EXIF:MaxApertureValue=4

А потом просто вызывать в качестве параметра опции -@.

exiftool -@ lens8M.txt *.JPG

Геотеги, прочитать и редактировать

Exiftool — самый простой и доступный способ добавить метаданные о географическом расположении (геотеги) как в файлы цифровых фотографий, так и в файлы видео.

Удалить конкретные геотеги через пустое значение. Например, правильным считается при публикации фотографий в интернете удалить из них геотэги. Примечание: между двумя одинарными кавычками -geotag='' должно быть пустое значение, а не пробел.

exiftool -geotag='' FOTO.JPG

И наоборот, например, установить долготу и широту в метаданных цифрового фотоснимка можно с помощью параметров -GPSLongitude и -GPSLatitude соответственно. Например

exiftool -GPSLongitude="27,46"  -GPSLatitude="53,89" FOTO.JPG

ExifTool может работать с GPS-треками, в результате чего можно синхронизировать координаты GPS-трека и время создания фотоснимка. То есть, если во время фотосъёмок создавался GPS-трек, то из него с помощью ExifTool можно автоматически извлечь гео-координаты, соответствующие времени создания снимка, и записать их в метаданные фотографии.

exiftool -geotag track.gpx *.JPG

Манипуляции с датой и временем

Неправильно выставленное в фотокамере время - ещё одна распространённая досадная оплошность, которую ExifTool поможет исправить. Особенно это неприятно при синхронизации GPS-треков и фотографий. Потому что синхронизация с координатами GPS-трека происходит по времени создания фотографии, и отставание-спешка фотокамеры даже на одну минуту может привести к большим ошибкам координат места съёмки в метаданных цифрового фотоснимка. Исправить ситуацию можно с помощью специального формата год:месяц:день часы:минуты:секунды для опции -DateTimeOriginal, который несложно понять на следующем примере. Допустим, нам надо сделать фотографию старше «старше» на один год и один час.

exiftool "-DateTimeOriginal-=1:0:0 1:00:00" FOTO.JPG

Обратите внимание на знак уменьшения - перед знаком =. Если фотографию нужно сделать «моложе» по времени создания, то ставится знак +.

Можно изменить сразу три временны́х тега — DateTimeOriginal, CreateDate и ModifyDate. Для этого следует использовать опцию -AllDates.

Можно осуществить переименование имён файлов изображений на основе даты из EXIF с удалением оригинального имени файла.

exiftool -d %Y%m%d-%H%M%S.%%e "-filename<CreateDate" *.JPG

Переименование на основе даты создания без удаления начального имени файла.

exiftool -d %Y%m%d-%H%M%S%%-c-%%f.%%e "-filename<CreateDate" *.JPG

В ходе манипуляций ExifTool поменяет дату модификации файла. Восстановить оригинальную дату оригинала:

 exiftool '-filemodifydate<datetimeoriginal' FOTO.JPG