Phisch schrieb:Ein paar Parameter im EXIF Protokoll zu manipulieren ist sicherlich kein großes Ding. Aber das konsistent zu einer bestehenden Fotoserie zu machen ist nicht trivial und sollte beim Vergleich zu den vorherigen EXIFs in Zeitablauf auffallen. Es müssen dann ja auch die fortlaufenden Dateinamen, Zeitstempel (holländische Zeit?) und ggf. andere Parameter angepasst werden. Und hätten solche Superhirne dann beim Übergang der Kameras eine Nummer ausgelassen (das fehlende Foto)?
Ich habe zwar keine Hoffnung, dass dieser Superhin-Mumpitz hier jemals wieder endet, aber ich habe es mal zusammengesucht und ausprobiert. Komplexität: ich kenne div. Kuchenrezepte die komplizierter sind.
Unter Linux gibt es ein kleines Tool (ohne GUI nur Command-Line) namens
exiftool, das ziemlich standard ist und wenn nicht ohnehin schon, dann ganz leicht nachinstalliert werden kann und das es auch 2014 schon lange gab. Damit lassen sich Meta-Daten (EXIF, XMP und IPTC) aus anderen Dateien übernehmen.
SpoilerDie richtige Syntax für unseren Fall ist die hier: exiftool -TagsFromFile CanonTemplate.jpg -IPTC -EXIF -XMP FakeImageFromOtherCam.jpg
Dabei werden die EXIF-, XMP- und IPTC-Metadaten als komplette Blöcke unverändert übernommen. Es gibt eine andere Syntax (exiftool -TagsFromFile CanonTemplate.jpg "-all:all>all:all" FakeImageFromOtherCam.jpg), bei der die Gefahr besteht, dass exiftool die Daten leicht verändert (z.B. wird in Xmp.aux.ApproximateFocusDistance = 75/100 der Wert in 3/4 umgewandelt, was zwar dasselbe meint, aber verräterisch sein könnte, wenn jmd. darauf achtet) Nun muss man noch die Zeitstempel anpassen (wenn die Fotos nicht wirklich am 08.04.2014 gemacht wurden). Soll die Zeitspanne in der die Fotos geschossen wurden beibehalten werden, kann man das ganz easy mit einem relativen Offset machen:
Spoilerexiftool "-AllDates+=0:0:0 36118:47:0" -verbose FakeImageFromOtherCam.jpg
Format Years:Months:Days hours:minutes:secondsDasselbe sollte man natürlich noch für die Filesystem-Zeitstempel machen. Dafür gibt es das Standard-Command-Line-Tool
touch.
SpoilerSyntax ist ein bisschen anders: touch -A -250000 FakeImageFromOtherCam.jpg
(wobei das Zeit-Format hier hhmmss ist, in dem Fall also 25 Stunden)
oder auch so:touch -r FakeImageFromOtherCam.jpg -d '-1 day' FakeImageFromOtherCam.jpg
Das ganze lässt sich dann mit einem kleinen Shell-Script easy auf alle Dateien z.B. in einem Folder anwenden:
Spoiler#!/bin/bash
for filename in /MyFolder/*.jpg; do
# Do stuff here
done
Das einzige kleine Problem, das noch bleibt, ist dass die Fotos unterschiedliche Orientierungen haben können nämlich Hochformat (90° L/R) und Querformat (0°/180°). Alle vier Orientierungen kommen in den Nachtbildern vor. Daher muss man entweder vier Templates nutzen und dann die Bilddateien nach Orientierungen getrennt verarbeiten, oder man setzt den Wert für "
Exif.Image.Orientation" nachträglich für die Dateien entsprechend (wieder mit
exiftool, wobei man die originale Orientierung sinniger Weise vorher aus den Fake-Fotos extrahiert, ebenfalls mit
exiftool).
Falls ich nichts übersehe ist damit an den Meta-Daten (EXIF, XMP, IPCT und Filesystem) nichts mehr erkennbar.
Ein letztes Problem bestünde nur, falls die andere Kamera die Bilder in einem anderen Format abspeichert (z.B. anderes Farb-Modell). Das ließe sich dann mit den Command
convert (
ImageMagick) regeln (auch ein absolutes Standard-Tool unter Linux).
Spoilerconvert Canon.jpg conon.icc
convert Other.jpg other.icc
convert image.jpg -profile <other.icc> -profile <Canon icc> new_image.jpg
Allerdings dürfte das Farbmodell normalerweise sowieso sRGB sein, so dass dieser Schritt idR. entfällt.
Wenn man die Bildgröße nicht identisch wie auf der Canon einstellen kann (auch eher unwahrscheinlich), kann man auch das mit
convert anpassen (wie auch noch diverse weitere Dinge):
Spoilerconvert -resize 1024X768 source.jpg dest.jpg
Ich bin jetzt keine Genie und musste die genaue Syntax an mehreren Stellen nachschlagen. Aber das einzige wo ich mir nicht schon vorher weitgehend sicher war, dass es geht, ist ob
exiftool die Metadaten komplett unverändert (Blockweise) übernehmen kann.
Also alles nicht so wild, kann sich auch jedes Script-Kiddie genauso schnell zusammenfriemeln.