Batch delete exif info

Comment puis-je supprimer récursivement les informations EXIF ​​de plusieurs milliers de files JPG?

Les autres suggestions ExifTool sont géniales si vous souhaitez supprimer ou modifier des sections spécifiques. Mais si vous voulez supprimer complètement toutes les métadonnées, utilisez ceci (depuis 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 en fonction de ce que vous voulez faire, ces deux programmes ont différentes options pour en préserver ou supprimer tout. Par exemple, jhead -purejpg toutes les informations non nécessaires pour rendre l'image.

Vous devriez regarder quelques outils opensource comme exiftool . Il y a beaucoup d'options (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 Atsortingbution-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 Atsortingbution-Noncommercial-No Derivative Works 3.0 License.' \ -exif:Artist='votre nom' \ -exif:Copyright='Copyright votre nom. This work is licensed under a Creative Commons Atsortingbution-Noncommercial-No Derivative Works 3.0 License.' \ votre_file.jpg 

La seule chose que vous devriez faire ensuite est d'écrire un petit script qui répertorie vos files (jpg) et fait les choses. Pour supprimer le contenu d'un champ, vous devez 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= ^ -ParamesortingcShadows= ^ -ParamesortingcDarks= ^ -ParamesortingcLights= ^ -ParamesortingcHighlights= ^ -ParamesortingcShadowSplit= ^ -ParamesortingcMidtoneSplit= ^ -ParamesortingcHighlightSplit= ^ -SharpenRadius= ^ -SharpenDetail= ^ -SharpenEdgeMasking= ^ -ConvertToGrayscale= ^ -ToneCurveName= ^ -CameraProfile= ^ -HasSettings= ^ -CropTop= ^ -CropLeft= ^ -CropBottom= ^ -CropRight= ^ -CropAngle= ^ -CropWidth= ^ -CropHeight= ^ -CropUnit= ^ -HasCrop= ^ -AlreadyApplied= ^ -ToneCurve= ^ -CameraProfile= ^ -ApplicationRecordVersion= ^ 

L'outil de gestion EXIF exiv2 dispose d'une command de suppression des données EXIF:

 exiv2 rm image.jpg 

supprime toutes datatables EXIF ​​de l'image.

Pour supprimer datatables EXIF ​​de toutes les images JPEG du directory actuel, utilisez

 exiv2 rm *.jpg 

Pour supprimer datatables EXIF ​​de toutes les images JPEG du directory courant et de tous les sous-directorys récursifs, utilisez:

find . -type f -iname '*.jpg' | xargs exiv2 rm

C'est une bonne idée de tester la command avant.

Pour voir quels files sont trouvés:

 find . -type f -iname '*.jpg' | less 

Pour voir quelles commands seront exécutées:

 find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less 

Notez l' echo inséré avant exiv2 pour imprimer la command, au lieu de l'exécuter.

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 file, et exécute vos fonctions de bande désirées sur cela. Utilisez ensuite find pour exécuter ce script sur votre set de files. Le script ressemblerait à quelque chose comme ceci:

 #!/bin/sh exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1 

Supposons que vous l'enregistrez en tant que /usr/local/bin/ssortingp_exif.sh , vous pouvez alors l'appeler en allant dans le dossier qui a vos files jpeg comme ceci:

 find -type f -iname '*.jpg' -exec ssortingp_exif.sh {} \; 

Edit: Après avoir vu la réponse de mattdm sur l'argument de l'entrelacement de tous les tags, je suppose que vous pouvez ignorer le script et utiliser la search comme ceci:

 fine -type f -iname '*.jpg' -exec exiftool -all= {} \;