Назваться любителем командной строки будет для меня как-то чересчур, скорее, я стал им добровольно-принудительно, т.к. после обновления 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:RAW201220120218.Family.NEX
N.B.: последняя строка в файле-описании необязательна, т.к. она определяет запись «рабочего значения» диафрагмы, а оно, во-первых, может быть разным, а во-вторых, не всех действительно интересует. Ведь тогда надо его не только запомнить, но и проставить отдельно для всех фотографий…
Надеюсь, кому-то эта информация покажется интересной и/или пригодится, хотя она является, по большому счёту, выдержками из документации ExifTool. Однако, не всегда есть возможность читать всю документацию, потому «готовый рецепт» может пригодится. По крайней мере, я так полагаю. Удачи!
Автор: sasha817