Frontend-разработчик
0,0
рейтинг
5 августа 2014 в 11:24

ExifTool – швейцарский нож фотометаданных из песочницы

Назваться любителем командной строки будет для меня как-то чересчур, скорее, я стал им добровольно-принудительно, т.к. после обновления OS X 10.7 на 10.8 перестала работать программа, которая до того вполне неплохо проставляла геотеги на отснятые фотографии. Здесь надо сделать отступление: на написание этой заметки меня сподвиг более или менее «соседний» материал под названием «Как сэкономить на фотоаппарате с GPS». В моём случае имеет место несколько менее извращённый подход к получению координат посещённых мест, а именно — запись трека GPS-навигатором, остальное же выполняется с помощью ExifTool.

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

Итак, предположим, что у Вас есть набор снимков, GPS-трек, ExifTool и часы камеры и GPS-устройства были синхронизированы (или Вы знаете разницу во времени). В таком случае следующая команда удобно совершит все действия над файлами *.tif в текущем каталоге (папке):
exiftool -geotag ~/Documents/Travel/.../some_track.gpx *.tif

N.B.: я использую запись «exiftool», т.к. в моём случае (OS X) так оно вызовется относительно правильно, для Windows желательно будет добавить расширение (с уважением, К.О.).

И, к слову, создаст вдвое больше файлов, оставив рядом с каждым файл-оригинал *.tif_original. Это вполне удобно, пока Вы лишь экспериментируете, дабы не затереть существующий материал и не обременять себя дополнительным резервным копированием. Если же Вы хотите избежать такого действия — достаточно воспользоваться опцией -overwrite_original.

А если часы камеры и gps-приёмника рассинхронизированы? К примеру, в прошлом году я успешно забыл сменить летнее время на зимнее и пол-года у меня что-то было чуть-чуть не так… Опция -geosync позволяет задать эту разницу во времени.
exiftool -geosync=+1:00:00 -geotag ~/Documents/Travel/.../some_track.gpx *.tif

Удобно? По-моему, относительно удобно. Лично мне тыкать мышью в поисках трек-файла часто отнимало больше времени, чем сразу прописать путь к нему.

Бывает потребность в обратном: удалении геотегов. Это тоже элементарно:
exiftool -xmp:geotag= *.tiff

Но давайте рассмотрим и другие аспекты применения ExifTool.

Копирование EXIF-тегов

Я использую RAW-конвертор RPP, у которого есть опция, позволяющая включить или выключить копирование EXIF-тегов. Иногда это действительно удобно, но иногда — очень даже лишнее. Зазевавшись однажды, я заметил недостающую информацию уже после того, как были сгенерированы и обработаны все *.tiff. Но оказалось, что этот вариант — не проблема. Решение элементарно как для одиночного файла:
exiftool -TagsFromFile a.cr2 a.jpg

Так и для нескольких файлов в папке (предполагается, что оригиналы и производные лежат «рядом»):
exiftool -tagsfromfile %d%f.CRW -r -ext JPG dir


Свалить в более или менее хронологическую кучу фотографии с разных камер

Переименование осуществляется только на основе даты из EXIF, имя файла-оригинала удаляется:
exiftool -d %Y%m%d-%H%M%S.%%e "-filename<CreateDate" *.cr2

И без удаления имени оригинала:
exiftool -d %Y%m%d-%H%M%S%%-c-%%f.%%e "-filename<CreateDate" *.cr2

N.B.: желательно, чтобы часы камер были предварительно синхронизированы (с уважением, К.О.).

В метаданные можно вписать Ваши титулы и email-ы

Вы же хотите, чтобы Вас потом можно было найти?
exiftool -Artist='Ivan Petrov' -Copyright='© Ivan Petrov, all rights reserved' -By-line='Ivan Petrov' -Credit='Petrov Studio' -Contact='ivan@petrov.com' '-xmp-xmprights:marked=1' -overwrite_original *.cr2


Извлечь определённые данные (на примере фокусного расстояния)

В ходе одной дискуссии у меня возникла необходимость ответить на вопрос о том, каковы наиболее популярные (у меня) фокусные расстояния. Но надо откуда-то взять исходные данные. Что ж, можно выгрузить информацию в текстовый файл, например, в формате :
exiftool -r -T -filename -focallength -ext CR2 FOLDER_NAME > FILE_NAME.txt

Дальнейший анализ легко выполняется в любимом табличном процессоре (хотя мой друг, поленившись, втянул всё это в SQL-базу, для него так было быстрее).

Восстановить дату создания файла

В ходе манипуляций ExifTool поменяет дату создания файла (что, в принципе, логично, т.к. файлы переписываются). Восстановить дату создания оригинала легко:
exiftool "-filemodifydate<datetimeoriginal" DIR


Извлечение встроенных в RAW JPEG-ов

Иногда бывает полезно. Впрочем, это элементарно:
exiftool -b -PreviewImage -w _preview.jpg -ext RAW_EXTENSION -r FOLDER


Добавить в EXIF данные о старой оптике

Имея в наличии арсенал старой оптики и всевозможные переходники для Sony Nex, у меня также есть желание знать, каким объективом я снимал. Это тоже вполне возможно:
exiftool -LensModel="Meyer Optik Görlitz Oreston 50mm F1.8" ‑"MaxApertureValue"=1.8 ‑FocalLengthIn35mmFormat="75" ‑FocalLength="50" ‑LensType="M42 via adapter" FILENAME/MASK

На известном форуме любителей MF-оптики предлагается более изящный вариант, который требует создания файла-описания для каждой линзы, по виду:
-n
-XMP:Lens=Carl Zeiss Jena Tessar 50mm f/3.5 (EXA)
-XMP:SerialNumber=3692001
-EXIF:MaxApertureValue=3.5
-EXIF:FocalLength=50
-EXIF:FocalLengthIn35mmFormat=50
-EXIF:FNumber=5.6

После чего его применение будет несколько более тривиальным:
exiftool -@ czjtessar50exa.txt H:\RAW\2012\20120218.Family.NEX\

N.B.: последняя строка в файле-описании необязательна, т.к. она определяет запись «рабочего значения» диафрагмы, а оно, во-первых, может быть разным, а во-вторых, не всех действительно интересует. Ведь тогда надо его не только запомнить, но и проставить отдельно для всех фотографий…

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

UPD1. В комментариях (здесь) советуют альтернативу для некоторых операций — я пока что не смотрел, но вдруг.
UPD2. А ещё — дельное напоминание о существовании Windows-GUI для ExifTool.
Александр Н. @sasha817
карма
6,0
рейтинг 0,0
Frontend-разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (6)

  • 0
    Замечу, что «man exiftool» выдет более 100 кб документации, в т.ч. с кучей хороших примеров, как, что и для чего использовать.
    • 0
      Согласен. Документация у Фила тоже не страдает, просто иногда так лень что-то конкретное там выискивать…
  • 0
    ExifToolGUI
    Тоже пригодится, удобно пользоваться timeshift когда есть фото с кучи фотоаппаратов в один день.
    • 0
      Для Windows я его и вправду использовал, но позабыл. Спасибо за дельное замечание!
  • 0
    На всякий случай, упомяну, что с некоторыми из упомянутых операций также справляется jhead. Сам использую обе эти утилиты для разных задач (аналогично взаимодополняющим друг друга curl и wget).
    • 0
      Не знал, спасибо! Посмотрю.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.