2015-01-07 3 views
3

Я хотел бы обновить данные метаданных фотографий с помощью exiftool, например, данных датчика температуры, датчика высоты и долготы долготы GPS. Во-первых, я попытался добавить новые теги этих данных с помощью командной строки в файле конфигурации exiftool, и он работает. Теперь я хочу обновить данные с помощью скрипта python, тогда кто-то сказал мне, что я могу использовать execute() method, но я так смущен и до сих пор не знаю, как использовать этот метод.Редактирование/обновление данных метаданных фотографий с помощью pyexiftool

Может ли кто-нибудь помочь и дать мне пример скрипта python в exiftool для редактирования метаданных?

+0

Это звучит, как вы можете передать 'Execute() 'переменное число строковых аргументов, подобное тем, которые вы использовали для добавления новых тегов через версию командной строки. – martineau

ответ

0

Попробуйте сделать это:

from your_class import ExifTool, fsencode 

with ExifTool(source) as et: 
    params = map(fsencode, ['-Title="%s"' % title, '%s' % source_file]) 
    et.execute(*params) 

Я боролся с этим на некоторое время, пока я, наконец, не понял, что я должен был передать параметры таким образом. Если вы посмотрите на метод execute_json, вот откуда я получил эту идею.

Возможно, было более элегантное решение, но это то, что сработало для меня. Кроме того, я использую Python 3.

2

код для конкретной задачи:

import exiftool 
et = exiftool.ExifTool("C:\Users\...\exiftool.exe") 
et.execute("-GPSLongitude=10.0", "picture.jpg") 
et.execute("-GPSLatitude=5.78", "picture.jpg") 
et.execute("-GPSAltitude=100", "picture.jpg") 
et.terminate() 

В качестве альтернативы, вы можете оставить на terminate вызов при использовании with заявления:

with exiftool.ExifTool("C:\Users\...\exiftool.exe") as et: 
    et.execute("-GPSLongitude=10.0", "picture.jpg") 
    et.execute("-GPSLatitude=5.78", "picture.jpg") 
    et.execute("-GPSAltitude=100", "picture.jpg") 

Использование заявления with гарантирует, что подпроцесс убит, см. PyExifTool documentation


Если вы хотите изменить дату (создать, изменить и т. Д.), Не забудьте оставить в кавычки запятую вокруг самой даты. Это было то, что мне потребовалось некоторое время, чтобы выяснить, так как никакой обработки ошибок не происходит:

командной строки:

exiftool -FileModifyDate="2015:10:01 10:00:00" picture.jpg 

Python:

et.execute("-FileModifyDate=2015:10:01 10:00:00", "picture.jpg") 

 Смежные вопросы

  • Нет связанных вопросов^_^