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= {} \;