Come posso rimuovere in modo ricorsivo le informazioni EXIF da diverse migliaia di file JPG?
Come posso rimuovere in modo ricorsivo le informazioni EXIF da diverse migliaia di file JPG?
Risposte:
Gli altri suggerimenti di ExifTool sono fantastici se si desidera rimuovere o modificare sezioni specifiche. Ma se vuoi rimuovere completamente tutti i metadati, usa questo (dalla pagina man):
exiftool -all= dst.jpg
Delete all meta information from an image.
Puoi anche usare jhead , con il flag -de:
-de Delete the Exif header entirely. Leaves other metadata
sections intact.
Si noti che in entrambi i casi, EXIF è solo un tipo di metadati. Potrebbero essere presenti altre sezioni di metadati e, a seconda di ciò che si desidera fare, entrambi questi programmi hanno opzioni diverse per preservarne o rimuoverle tutte. Ad esempio, jhead -purejpg
elimina tutte le informazioni non necessarie per il rendering dell'immagine.
Lo strumento di gestione EXIF exiv2
ha un comando per eliminare i dati EXIF:
exiv2 rm image.jpg
rimuove tutti i dati EXIF dall'immagine.
Per rimuovere i dati EXIF da tutte le immagini JPEG nella directory corrente, utilizzare
exiv2 rm *.jpg
Per rimuovere i dati EXIF da tutte le immagini JPEG nella directory corrente e tutte le sue sottodirectory ricorsivamente, utilizzare:
find . -type f -iname '*.jpg' | xargs exiv2 rm
È una buona idea testare il comando prima.
Per vedere quali file sono stati trovati:
find . -type f -iname '*.jpg' | less
Per vedere quali comandi verranno eseguiti:
find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less
Nota echo
prima inserito exiv2
per stampare il comando, invece di eseguirlo.
Dovresti esaminare alcuni strumenti open source come exiftool . C'è molta opzione (per 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
L'unica cosa che dovresti fare dopo è scrivere un piccolo script che elenca i tuoi file (jpg) e fa le cose. Per rimuovere il contenuto di un campo dovrai impostarlo su "^"; come il seguente esempio:
-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= ^
Il suggerimento di Vincent di usare exiftool è buono. Ti suggerisco di scrivere uno script che accetti un singolo argomento di un nome file e su di esso esegua le funzioni di strip desiderate. Quindi utilizzare find
per eseguire questo script sul set di file. La sceneggiatura sarebbe simile a questa:
#!/bin/sh
exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1
Supponi di averlo salvato come /usr/local/bin/strip_exif.sh
, quindi puoi chiamarlo andando nella cartella che contiene i tuoi file jpeg in questo modo:
find -type f -iname '*.jpg' -exec strip_exif.sh {} \;
Modifica: dopo aver visto la risposta di mattdm sull'argomento per lo striping di tutti i tag, immagino che tu possa saltare lo script e usare semplicemente la ricerca in questo modo:
find -type f -iname '*.jpg' -exec exiftool -all= {} \;