Comment supprimer récursivement les informations EXIF de plusieurs milliers de fichiers JPG?
Comment supprimer récursivement les informations EXIF de plusieurs milliers de fichiers JPG?
Réponses:
Les autres suggestions ExifTool sont utiles si vous souhaitez supprimer ou modifier des sections spécifiques. Mais si vous souhaitez supprimer complètement toutes les métadonnées, utilisez ceci (à partir de la page de manuel):
exiftool -all= dst.jpg
Delete all meta information from an image.
Vous pouvez également utiliser jhead , avec le drapeau -de:
-de Delete the Exif header entirely. Leaves other metadata
sections intact.
Notez que dans les deux cas, EXIF n'est qu'un type de métadonnées. D'autres sections de métadonnées peuvent être présentes, et selon ce que vous voulez faire, ces deux programmes ont des options différentes pour en conserver certains ou tout supprimer. Par exemple, jhead -purejpg
supprime toutes les informations non nécessaires au rendu de l'image.
L'outil de gestion EXIF exiv2
a une commande pour supprimer les données EXIF:
exiv2 rm image.jpg
supprime toutes les données EXIF de l'image.
Pour supprimer les données EXIF de toutes les images JPEG du répertoire actuel, utilisez
exiv2 rm *.jpg
Pour supprimer les données EXIF de toutes les images JPEG du répertoire actuel et de tous ses sous-répertoires de manière récursive, utilisez:
find . -type f -iname '*.jpg' | xargs exiv2 rm
C'est une bonne idée de tester la commande avant.
Pour voir quels fichiers sont trouvés:
find . -type f -iname '*.jpg' | less
Pour voir quelles commandes seront exécutées:
find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less
Notez l' echo
inséré avant exiv2
d'imprimer la commande, au lieu de l'exécuter.
Vous devriez regarder quelques outils open source comme exiftool . Il y a beaucoup d'options (pour 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
La seule chose que vous devez faire ensuite est d'écrire un petit script qui répertorie vos fichiers (jpg) et fait le truc. Pour supprimer le contenu d'un champ, vous devrez le définir sur "^"; comme l'exemple suivant:
-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= ^
La suggestion de Vincent d'utiliser exiftool est bonne. Je vous suggère d'écrire un script qui accepte un seul argument d'un nom de fichier et exécute les fonctions de bande souhaitées à ce sujet. Utilisez ensuite find
pour exécuter ce script sur votre ensemble de fichiers. Le script ressemblerait à ceci:
#!/bin/sh
exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1
Supposons que vous enregistrez cela sous /usr/local/bin/strip_exif.sh
, vous pouvez ensuite l'appeler en accédant au dossier contenant vos fichiers jpeg comme celui-ci:
find -type f -iname '*.jpg' -exec strip_exif.sh {} \;
Edit: Après avoir vu la réponse de mattdm à propos de l'argument pour supprimer toutes les balises, je pense que vous pouvez ignorer le script et simplement utiliser la recherche comme ceci:
find -type f -iname '*.jpg' -exec exiftool -all= {} \;