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.
Ещё примером графической оболочки для ExifTool можно назвать утилиту PyExifToolGUI. (Читать подробнее о PyExifToolGUI)
Судя по названию, утилита ExifTool в первую очередь предназначена для работы с метаданными EXIF в цифровых фотографиях. Поддерживаются форматы фотоизображений: JPEG, TIFF, PNG, DNG, NEF, PEF, CRW, JP2, CR2, MRW, ARW, SR2, ORF, RAF, и другие.
Но следует учитывать, что также утилита ExifTool может работать с метаданными в других типах файлов.
- видео и аудио: 3gp, AVI, MPG, MOV, WEBM, MP3, MP4, Ogg и др.;
- документы: PDF, Djvu, RTF, PPT, EPUB и др.;
- архивы и бинарные файлы: ZIP, DLL и др.
При этом для одних файлов доступно как чтение метаданных, так и их редактирование. А для других типов файлов доступно только чтение. Полную информацию о многочисленных возможностях утилиты ExifTool почерпнуть, выполнив, после установки программы, команду
man exiftool
В мануале будет таблица, где символами будет помечена возможность редактирования метаданных для такого типа файла. Символ (r) — метаданные только для чтения, (w) — метаданные можно с помощью ExifTool перезаписывать, (c) — метаданные можно создавать.
Некоторые примеры работы ExifTool с фотографиями
Рассмотрим несколько опций этой консольной утилиты, необходимых для базовой работы с метаданными EXIF в файлах фотоизображений, так как этот формат метаданных используется практически во всех цифровых фотокамерах. Хотя ExifTool работает и с форматами метаданных XMP, IPTC.
Чтение и редактирование тегов
Прочитать и отобразить все данные EXIF изображения.
exiftool FOTO.JPG
Прочитать какой-либо отдельный тег в метаданных изображения — например, информацию тега 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-тегам
- Make — производитель камеры
- Model — модель камеры
- DateTime — дата последнего изменения изображения
- ExposureTime — выдержка
- FNumber — число диафрагмы
- ISO — светочувствительность
- DateTimeOriginal — время съемки
- FocalLength — фокусное расстояние объектива на камере
- Artist — автор
- Copyright — копирайт
- UserComment — комментарии пользователя к файлу
Чтобы не вводить каждый раз какой-либо набор тегов, их можно записать в отдельный текстовой файл. Например, набор общих тегов для любых оцифрованных снимков с фотоаппарата "Смена 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