Supprimer les informations exif par lot

16

Comment supprimer récursivement les informations EXIF ​​de plusieurs milliers de fichiers JPG?

LanceBaynes
la source

Réponses:

17

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 -purejpgsupprime toutes les informations non nécessaires au rendu de l'image.

mattdm
la source
6

L'outil de gestion EXIF exiv2a 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' echoinséré avant exiv2d'imprimer la commande, au lieu de l'exécuter.

Volker Siegel
la source
3

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= ^
Vincent Demeester
la source
3

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 findpour 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= {} \;
Caleb
la source