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
Это решает много проблем