Как я могу рекурсивно удалить информацию EXIF из нескольких тысяч файлов JPG?
источник
Как я могу рекурсивно удалить информацию EXIF из нескольких тысяч файлов JPG?
Другие предложения ExifTool хороши, если вы хотите удалить или изменить определенные разделы. Но если вы хотите полностью удалить все метаданные, используйте это (со страницы руководства):
exiftool -all= dst.jpg
Delete all meta information from an image.
Вы также можете использовать jhead с флагом -de:
-de Delete the Exif header entirely. Leaves other metadata
sections intact.
Обратите внимание, что в обоих случаях EXIF является только одним типом метаданных. Могут присутствовать другие разделы метаданных, и в зависимости от того, что вы хотите сделать, обе эти программы могут по-разному сохранять или удалять все. Например, jhead -purejpg
удаляет всю информацию, не необходимую для рендеринга изображения.
У инструмента обработки EXIF exiv2
есть команда для удаления данных EXIF:
exiv2 rm image.jpg
удаляет все данные EXIF из изображения.
Чтобы удалить данные EXIF из всех изображений JPEG в текущем каталоге, используйте
exiv2 rm *.jpg
Чтобы удалить данные EXIF из всех изображений JPEG в текущем каталоге и всех его подкаталогов рекурсивно, используйте:
find . -type f -iname '*.jpg' | xargs exiv2 rm
Это хорошая идея, чтобы проверить команду раньше.
Чтобы увидеть, какие файлы найдены:
find . -type f -iname '*.jpg' | less
Чтобы увидеть, какие команды будут выполнены:
find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less
Обратите внимание на echo
вставленную перед exiv2
печатью команду вместо ее запуска.
Вы должны взглянуть на некоторые инструменты с открытым исходным кодом, такие как exiftool . Вариантов много (для exif, xmp, iptc).
exiftool -overwrite_original \
-xmp:Creator='votre nom' \
-xmp:WebStatement='http://creativecommons.org/licenses/by-nc-nd/3.0/' \
-xmp:Rights='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-iptc:By-line='votre nom' \
-iptc:CopyrightNotice='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-exif:Artist='votre nom' \
-exif:Copyright='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
votre_fichier.jpg
Единственное, что вы должны сделать дальше, это написать крошечный скрипт, который перечисляет ваши файлы (jpg) и выполняет все эти вещи. Чтобы удалить содержимое поля, вам нужно установить его на «^»; как в следующем примере:
-Software= ^
-ModifyDate= ^
-CreatorTool= ^
-MetadataDate= ^
-Rating= ^
-ImageNumber= ^
-WhiteBalance= ^
-Temperature= ^
-Tint= ^
-IncrementalTemperature= ^
-IncrementalTint= ^
-Exposure= ^
-Shadows= ^
-Brightness= ^
-Contrast= ^
-Saturation= ^
-Sharpness= ^
-LuminanceSmoothing= ^
-ColorNoiseReduction= ^
-ChromaticAberrationR= ^
-ChromaticAberrationB= ^
-VignetteAmount= ^
-VignetteMidpoint= ^
-ShadowTint= ^
-RedHue= ^
-RedSaturation= ^-GreenHue= ^
-GreenSaturation= ^
-BlueHue= ^
-BlueSaturation= ^
-FillLight= ^
-Vibrance= ^
-HighlightRecovery= ^
-Clarity= ^
-Defringe= ^
-HueAdjustmentRed= ^
-HueAdjustmentOrange= ^
-HueAdjustmentYellow= ^
-HueAdjustmentGreen= ^
-HueAdjustmentAqua= ^
-HueAdjustmentBlue= ^
-HueAdjustmentPurple= ^
-HueAdjustmentMagenta= ^
-SaturationAdjustmentRed= ^
-SaturationAdjustmentOrange= ^
-SaturationAdjustmentYellow= ^
-SaturationAdjustmentGreen= ^
-SaturationAdjustmentAqua= ^
-SaturationAdjustmentBlue= ^
-SaturationAdjustmentPurple= ^
-SaturationAdjustmentMagenta= ^
-LuminanceAdjustmentRed= ^
-LuminanceAdjustmentOrange= ^
-LuminanceAdjustmentYellow= ^
-LuminanceAdjustmentGreen= ^
-LuminanceAdjustmentAqua= ^
-LuminanceAdjustmentBlue= ^
-LuminanceAdjustmentPurple= ^
-LuminanceAdjustmentMagenta= ^
-SplitToningShadowHue= ^
-SplitToningShadowSaturation= ^
-SplitToningHighlightHue= ^
-SplitToningHighlightSaturation= ^
-SplitToningBalance= ^
-ParametricShadows= ^
-ParametricDarks= ^
-ParametricLights= ^
-ParametricHighlights= ^
-ParametricShadowSplit= ^
-ParametricMidtoneSplit= ^
-ParametricHighlightSplit= ^
-SharpenRadius= ^
-SharpenDetail= ^
-SharpenEdgeMasking= ^
-ConvertToGrayscale= ^
-ToneCurveName= ^
-CameraProfile= ^
-HasSettings= ^
-CropTop= ^
-CropLeft= ^
-CropBottom= ^
-CropRight= ^
-CropAngle= ^
-CropWidth= ^
-CropHeight= ^
-CropUnit= ^
-HasCrop= ^
-AlreadyApplied= ^
-ToneCurve= ^
-CameraProfile= ^
-ApplicationRecordVersion= ^
Предложение Винсента использовать exiftool хорошо. Я предлагаю вам написать скрипт, который принимает один аргумент имени файла и запускает нужные вам функции стриптиза. Затем используйте find
для выполнения этого сценария в вашем наборе файлов. Сценарий будет выглядеть примерно так:
#!/bin/sh
exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1
Скажем, вы сохранили это как /usr/local/bin/strip_exif.sh
, затем вы могли бы вызвать его, перейдя в папку, в которой находятся ваши файлы JPEG:
find -type f -iname '*.jpg' -exec strip_exif.sh {} \;
Изменить: После просмотра ответа mattdm об аргументе для удаления всех тегов, я думаю, что вы можете пропустить сценарий и просто использовать поиск как здесь:
find -type f -iname '*.jpg' -exec exiftool -all= {} \;