exiftool: удалить данные exif, но сохранить некоторые специальные теги

В настоящее время я использую exiftool с параметром -all =, и он удаляет все данные EXIF ​​из моих фотографий:

exiftool -overwrite_original -all= /Users/andyl/photos/*.jpg

Теперь я хочу, чтобы exiftool удалил всю информацию EXIF, но НЕ заголовок, заголовок и ключевые слова фотографии.

Как мне этого добиться?

3 ответа

Решение

Вы всегда должны проверять справочные страницы, если у вас проблемы.

man exiftools

Который должен прочитать что-то вроде этого:

--TAG

    Exclude specified tag from extracted information.  Same as the -x
    option.  May also be used following a -tagsFromFile option to
      exclude tags from being copied, or to exclude groups from being
    deleted when deleting all information (ie. "-all= --exif:all"
    deletes all but EXIF information).  But note that this will not
    exclude individual tags from a group delete.  Instead, individual
    tags may be recovered using the -tagsFromFile option (ie. "-all=
    -tagsfromfile @ -artist").  Wildcards are permitted as described
    above for -TAG.

Что-то вроде:

exiftool -overwrite_original -all= -tagsFromFile @ -title -caption -keywords /Users/andyl/photos/*.jpg

должно сработать. Убедитесь, что теги действительно названы таким образом, используя exif /path/to/file.jpg,

Что делает команда? -all= удаляет все теги, -tagsFromFile @ берет перечисленные флаги из исходного файла, в этом случае @ представляет текущий файл, (вы можете, конечно, заменить здесь фиксированный файл, как -tagsFromFile pic.jpg) и записывает их в пункт назначения.

Если вы хотите удалить только определенные теги из исходного файла (т.е. не передавать из тегов между файлами, но из одного и того же файла), вам не нужно -tagsFromFile переключатель, но < сказать, чтобы передать их по файлу.

Примечание: на данный момент (версия 10.79) -common<common не может установить составные теги и, следовательно, используя -common для передачи тегов будут ломаться вещи, например, передача Flash в Model , Поэтому мой код является явным и включает каждый тег, который -common будет обычно включать. В любом случае, это хорошая идея.

exiftool -All:All= \
         -DateTimeOriginal<DateTimeOriginal \
         -Model<Model \
         -LensModel<LensModel \
         -FocalLength<FocalLength \
         -ISO<ISO \
         -ExposureTime<ExposureTime -ShutterSpeedValue<ShutterSpeedValue -BulbDuration<BulbDuration \
         -ApertureValue<ApertureValue -FNumber<FNumber \
         -WhiteBalance<WhiteBalance \
         -Flash<Flash \
         test.jpg
  # Or, if you want to use `-TagsFromFile`:
exiftool -All:All= \
         -TagsFromFile test.jpg \
         -DateTimeOriginal \
         -Model \
         -LensModel \
         -FocalLength \
         -ISO \
         -ExposureTime -ShutterSpeedValue -BulbDuration \
         -ApertureValue -FNumber \
         -WhiteBalance \
         -Flash \
         test.jpg

Также обратите внимание, что мой код противоречит документации приложения exiftool, в которую входят примеры, которые я просто не смог получить для работы с этой задачей под рукой (и версия 10.79).

Чтобы удалить все данные с помощью инструмента exif:

переименовывать exiftool(-k).exe в

exiftool (-overwrite_original -all= -k).exe

Это решает много проблем

Другие вопросы по тегам