2017-10-27 10 views
0

Neu hochgeladen from Superuser auf Vorschlag eines anderen Benutzers, da dies wahrscheinlich einige (rudimentäre) Programmierung beinhaltet."Verwende" Foto-Metadaten von der Befehlszeile?

Wenn ich Fotos in sozialen Medien poste, möchte ich oft Teile des Bildes verwischen, um persönlich identifizierbare Daten zu entfernen. Dies ist mit einer beliebigen Anzahl von Bildbearbeitungstools problemlos möglich. Angenommen, ich möchte etwas in etwa Entsprechendes mit den Bildmetadaten machen? Zum Beispiel möchte ich das Datum und die verstrichene Zeit nach dem Zufallsprinzip verfälschen, damit sich ein Interessent noch eine grobe Vorstellung davon machen kann, wann es aufgenommen wurde (Datum und Uhrzeit) und die GPS-Koordinaten nach dem Zufallsprinzip verdreht sie auf die nächste Viertelmeile. Ich möchte oder möchte vielleicht nicht andere Daten wie den Kameratyp entfernen. Es muss nicht präzise sein, nur die Metadaten so anonymisieren, dass ich mich nicht eklig fühle, wenn jemand genau weiß, wann und wo ich war. Es scheint einfach, dies unter Verwendung von EXIFTool zu tun, aber das Lesen, Skewing und das Neuschreiben von Metadaten wäre ein wenig umständlich. Möchte man das Rad nicht neu erfinden, gibt es dafür einen einfachen Weg? Danke für jede Hilfe.

Antwort

0

Sie können dies mit exiftool tun, obwohl es ein wenig Wissen über die inneren Abläufe und von Perl benötigt.

Als Beispiel werde ich "verwischen", um die Zeit zufällig durch eine 10-minütige Spanne (+/- 5 Minuten) (ok, es ist technisch 9 min 59 sec, gibt es eine Chance, es auf 0 landet):
exiftool -d %s "-DateTimeOriginal<${DateTimeOriginal;$_+=(int(rand(600))-300)}" <FileOrDir>

Aufteilung:
-d %s - das ist das Datumsformat UNIX Zeit ändert, die Anzahl der Sekunden seit 1970:01:01 00:00:00
-DateTimeOriginal< - der Tag, die kopiert wird wird vermutlich der gleiche wie der Tag aus kopiert werden. Das Less Than-Zeichen < zeigt eine Tag-Kopieroperation an.
${DateTimeOriginal;$_+=(int(rand(600))-300)} - Das Tag, von dem einige Änderungen mit exiftools Advanced Formatting Feature (aka Perl-Code) kopiert werden. Wegen der -d Option ist dieser DateTimeOriginal -Tag-Wert im UNIX-Zeitformat. Dann wird eine Zufallszahl zwischen 0 und 599 generiert int(rand(600)), 300 subtrahieren, um es so zu teilen, dass etwas mehr als die Hälfte negativ ist und der Rest positiv (oder 0). Verwenden Sie die Standardvariable $_ und fügen Sie diese zur generierten Nummer += hinzu.

verschwimmen die GPSLatitude und GPSLongitude, Sie tun etwas ähnliches, dezimal Koordinaten anstelle von Grad/Minuten/Sekunden, und viel kleinere Zahlen, weil sogar Zehntel Grad viele Meilen sein. In diesem Fall wäre der wichtige Teil des Befehls ähnlich wie
"-GPSLatitude<${GPSLatitude#;$_+=(rand()-.5)/10}"
Hier habe ich das Hashtag # mit GPSLatitude als das wird die Dezimalkoordinate Wert. Eine andere Option wäre gewesen, die -c Option zu verwenden. Ich brachte es auch auf die 100. Dezimalstelle für das Niveau der Veränderung, die ich denke, vielleicht in den Meilen oder Zehnen von Meilen. Dies wird schlecht in der Nähe des Äquators und des Meridians zusammenbrechen, da die Hemisphäre nicht richtig berücksichtigt wird.

Um es alle zusammen:
exiftool -d %s "-DateTimeOriginal<${DateTimeOriginal;$_+=(int(rand(600))-300)}" "-GPSLatitude<${GPSLatitude#;$_+=(rand()-.5)/10}" "-GPSLongitude<${GPSLongitude#;$_+=(rand()-.5)/10}" <FileOrDir>

Dieser Befehl Backup-Dateien erstellt. Fügen Sie -overwrite_original hinzu, um die Erstellung von Sicherungsdateien zu unterdrücken. Fügen Sie -r hinzu, um in Unterverzeichnisse zurückzuspringen. Wenn dieser Befehl unter Unix/Mac ausgeführt wird, kehren Sie alle doppelten/einfachen Anführungszeichen um, um eine Bash-Interpretation zu vermeiden.

+0

Vielen Dank für die außerordentlich detaillierte und informative Antwort! Ich schätze es sehr.Dies sollte genau das tun, was ich brauche. – ludinom

Verwandte Themen