Batch löschen exif info

16

Wie kann ich die EXIF-Informationen rekursiv aus mehreren tausend JPG-Dateien entfernen?

LanceBaynes
quelle

Antworten:

17

Die anderen ExifTool-Vorschläge eignen sich hervorragend, wenn Sie bestimmte Abschnitte entfernen oder ändern möchten. Wenn Sie jedoch nur alle Metadaten vollständig entfernen möchten, gehen Sie wie folgt vor (von der Manpage):

   exiftool -all= dst.jpg
        Delete all meta information from an image.

Sie können auch jhead mit dem Flag -de verwenden:

   -de    Delete the Exif header entirely.  Leaves  other  metadata
          sections intact.

Beachten Sie, dass EXIF ​​in beiden Fällen nur eine Art von Metadaten ist. Möglicherweise sind andere Metadatenabschnitte vorhanden, und je nachdem, was Sie tun möchten, haben beide Programme unterschiedliche Optionen, um einige zu erhalten oder alle zu entfernen. Zum Beispiel werden jhead -purejpgalle Informationen entfernt, die zum Rendern des Bildes nicht benötigt werden.

mattdm
quelle
6

Das EXIF-Bearbeitungstool exiv2verfügt über einen Befehl zum Löschen von EXIF-Daten:

exiv2 rm image.jpg

Entfernt alle EXIF-Daten aus dem Bild.

Verwenden Sie, um EXIF-Daten aus allen JPEG-Bildern im aktuellen Verzeichnis zu entfernen

exiv2 rm *.jpg

Verwenden Sie zum rekursiven Entfernen von EXIF-Daten aus allen JPEG-Bildern im aktuellen Verzeichnis und allen Unterverzeichnissen davon Folgendes:

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

Es ist eine gute Idee, den Befehl vorher zu testen.

So sehen Sie, welche Dateien gefunden werden:

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

So sehen Sie, welche Befehle ausgeführt werden:

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

Beachten Sie das echozuvor eingefügte exiv2, um den Befehl zu drucken, anstatt ihn auszuführen.

Volker Siegel
quelle
3

Sie sollten sich einige OpenSource-Tools wie exiftool ansehen . Es gibt viele Optionen (zB 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

Das einzige, was Sie als nächstes tun sollten, ist, ein winziges Skript zu schreiben, das Ihre Dateien (jpg) auflistet und die Dinge erledigt. Um den Inhalt eines Feldes zu entfernen, müssen Sie es auf "^" setzen. wie das folgende Beispiel:

-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
quelle
3

Vincents Vorschlag, exiftool zu verwenden, ist gut. Ich schlage vor, Sie schreiben ein Skript, das ein einzelnes Argument eines Dateinamens akzeptiert und darauf die gewünschten Strip-Funktionen ausführt. Verwenden Sie dann find, um dieses Skript in Ihrem Dateisatz auszuführen. Das Skript würde ungefähr so ​​aussehen:

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

Angenommen, Sie speichern dies als /usr/local/bin/strip_exif.sh. Sie können es dann aufrufen, indem Sie in den Ordner gehen, in dem Ihre JPEG-Dateien wie folgt gespeichert sind:

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

Bearbeiten: Nachdem Sie die Antwort von mattdm zu dem Argument für das Striping aller Tags gesehen haben, können Sie das Skript überspringen und die Suche wie folgt verwenden:

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