Извлечение метаданных из необработанных изображений (камера DSLR)
Я ищу инструмент, который извлекает метаданные из необработанных изображений, созданных цифровой зеркальной фотокамерой (в моем случае Canon EOS 550D).
Фотографии могут быть конвертированы с помощью последней версии ufraw ( здесь PPA для этого).
С моей компактной камерой я просто использую exif, который работает только на jpg и не работает с необработанными изображениями.
Есть намеки?
5 ответов
Из описания пакета exifprobe
:
Exifprobe считывает файлы изображений, созданные цифровыми камерами (включая несколько так называемых "необработанных" форматов файлов), и сообщает о структуре файлов, а также вспомогательных данных и метаданных, содержащихся в них. В дополнение к TIFF, JPEG и EXIF, программа понимает несколько форматов, которые могут содержать "необработанные" данные камеры, включая MRW, CIFF/CRW, JP2/JPEG2000, RAF и X3F, а также большинство наиболее производных от TIFF "сырых" "форматы, включая DNG, ORF, CR2, NEF, K25/KDC/DCR и PEF.
http://www.virtual-cafe.com/~dhh/tools.d/exifprobe.d/exifprobe.html
Это работает?
Я бы использовал инструмент exiv2, это та же библиотека, что и ufraw/darktable, используемая для доступа к данным exif в необработанных изображениях. http://www.exiv2.org/ которая также поддерживает некоторые MakerNotes от таких производителей, как Nikon/Canon.
Из вашего комментария я понял, что в конечном итоге вы хотите переименовать файл, основываясь на дате. Если это единственная причина, по которой вы хотите использовать инструмент командной строки вместо графического интерфейса, вы можете попробовать phatch (в репозиториях) вместо того, чтобы делать извлечение / переименование файла EXIF самостоятельно.
Phatch позволяет пакетно обрабатывать изображения (например, выполнять набор действий для каждого изображения в папке, например). Одним из возможных действий является переименование, и вы можете использовать переменные, такие как <Exif_Image_DateTime>
переименовать его на основе данных EXIF. После того как вы определили и сохранили свой список действий, вы также можете использовать phatch из командной строки.
Мой любимый ответ для возни с данными EXIF - exiftool. Это портативный, бесплатный, открытый, написанный на Perl, и может быть использован в качестве модуля Perl для тех, кто склонен.
Это даже работает на Windows.
На вашем месте я бы подумал написать небольшой скрипт на Python, чтобы pyexiv2
, Это чрезвычайно легко использовать:
>>> metadata = pyexiv2.ImageMetadata('test.jpg')
>>> metadata.read()
>>> metadata.exif_keys
['Exif.Image.ImageDescription',
'Exif.Image.XResolution',
'Exif.Image.YResolution',
'Exif.Image.ResolutionUnit',
'Exif.Image.Software',
'Exif.Image.DateTime',
'Exif.Image.Artist',
'Exif.Image.Copyright',
'Exif.Image.ExifTag',
'Exif.Photo.Flash',
'Exif.Photo.PixelXDimension',
'Exif.Photo.PixelYDimension']
>>> metadata['Exif.Image.DateTime'].value
datetime.datetime(2004, 7, 13, 21, 23, 44)
Примечание: разные камеры используют разные поля для дат. Сначала проверьте, какие ключи доступны.
Он должен поддерживать необработанные изображения. Я знаю, что это делает для исходных файлов NEF, которые создает мой Nikon.
Если это не так, есть ли у вас версии JPEG с похожими именами (т.е. с разными расширениями)? Даже если он может анализировать ваши файлы RAW, возможно, стоит отметить файлы EXIF в формате JPEG, поскольку, скорее всего, он будет немного быстрее.
Совет: вы можете использовать оболочку Python вместо того, чтобы писать "правильный" скрипт Python. Это хорошо для тестирования, но если вы хотите что-то, что вы можете использовать снова и снова, вы, вероятно, захотите написать скрипт.