У меня есть сотни тысяч изображений в наборе из примерно 50 папок, каждая из которых имеет разное количество подпапок. Я хотел бы извлечь определенные фрагменты метаданных (широта/долгота, данные/время, модель камеры и серийный номер, может быть, несколько других) из всех изображений в этих папках и их подпапках и экспортировать их в таблицу (CSV будет проще всего), чтобы я мог импортировать метаданные в базу данных. Мне нужно сохранить как минимум 6 знаков после запятой в полях широты и долготы, данные о местоположении важны.
Итак, я ищу часть программного обеспечения Windows, которое я могу указать на папку и заставить ее пройти через эту папку и все ее подпапки, прочитать метаданные и экспортировать метаданные для каждого изображения в строке в файле CSV, например:
Filepath,Filename,Lat,Long,CameraSerial
C:\Images1\Folder1\,Image0001.jpg,42.00000002,-75.00000001,A0193498
C:\Images1\Folder2\,Image0001.jpg,42.00000112,-75.00000067,A0193498
C:\Images1\FolderZ\,Image0001.jpg,42.00000492,-75.00000099,A0193498
Я нашел Camera Bits Photo Mechanic, которая делает то, что мне нужно, но я надеялся, что есть бесплатное решение с открытым исходным кодом. Большинство инструментов, которые я нашел, которые выполняют пакетный экспорт метаданных EXIF, делают это, экспортируя отдельный текстовый файл для каждого входного JPG, а это не то, что мне нужно, мне нужна одна таблица на папку (и ее подпапки).
Вы можете сделать это довольно легко с помощью кроссплатформенного бесплатного программного обеспечения ExifTool . Это есть даже в FAQ :
Параметр
-csv
(значения, разделенные запятыми) решает эту дилемму, предварительно извлекая информацию из всех входных файлов, затем создавая отсортированный список имен доступных тегов в качестве первой строки вывода и организуя информацию в столбцы для каждого тега. Кроме того, создается первый столбец с надписью «SourceFile». Эти функции делают практичным использование-csv
опции для извлечения всей информации из нескольких изображений. Например, эта команда:exiftool -csv -r t/images > out.csv
дает такой вывод:
SourceFile,AEBBracketValue,AELock,AFAreaHeight,AFAreaMode,AFAreas,[...] t/images/Canon.jpg,0,,151,,,[...] t/images/Casio.jpg,,,,,,[...] t/images/Nikon.jpg,,,,Single Area,,[...] t/images/OlympusE1.jpg,,Off,,,"Center (121,121)-(133,133)",[...]
Это будет очень длинный список, поэтому, если вы хотите просто включить несколько конкретных вещей, вы можете сделать это:
exiftool -csv -Model -CreateDate -GPS:all -time:all *.jpg
(в данном примере все файлы в текущем каталоге).
Документация предупреждает, что -csv
флаг, в отличие от большинства опций exiftool, строит весь вывод в памяти, поэтому использование памяти может быть довольно большим при использовании со многими файлами — вероятно, лучше всего написать что-то, что идет по папкам. (Легко делается даже на простом пакетном языке.)
Инструмент, который приходит на ум, — это программное обеспечение с открытым исходным кодом, которое работает с большим количеством форматов файлов:
http://meta-extractor.sourceforge.net/
Это немного технически, но имеет много настроек, которые должны соответствовать вашим потребностям. Это решение предназначено только для Windows и Linux.
Кроме того, если у вас есть копия Adobe Photoshop, у вас будет Adobe Bridge с экстрактором метаданных.
Только что наткнулся на этот прекрасный инструмент из Австралии, приятель! ржунимагу
Это программа на Java, которая «... позволяет редактировать метаданные для отдельных изображений или обрабатывать их в пакетном режиме с помощью функций «Экспорт EXIF в CSV» и «Импорт EXIF из CSV».
Он работает только с файлами jpg/jpeg, но также имеет встроенный конвертер для преобразования файлов png в jpg. Мне нужно было экспортировать ограниченные метаданные фотографий в CSV, где я затем объединил другой CSV-файл с информацией о заголовке, авторе и дате.
Моника