Photo: Aufnahmedatum ändern

Moderator: ModerationP

Photo: Aufnahmedatum ändern

Beitragvon Fennek » 13. Mär 2018, 08:12

Hallo,

in einem anderen Forum (MrExcel) kam die Frage:

I would like to create a spreadsheet to change the Date Taken on pictures.
There are around 2000 pictures.

The file location is in column A (C:\Test)
The file name is in column B (Pic1.jpg)
The new Date Taken is in column C (11/3/2018) each one will be different
The new Date Taken Time is in column D (11:22:02) each one will be different
So it loops through the rows and changes the Date Taken to the values in columns C and D


Damit kommen Lightroom (einzelne Dateien "von Hand" ändern) oder exiftool (alle +1 Std) nicht infrage.

Mit "Namespace" 25 kann man zwar das Aufnahmedatum auslesen, aber nicht ändern.

Die Suchmaschine lieferte ua. diesen Code:

Code: Alles auswählen
Public Function SetPhotoDateTimeTaken( _
      ByVal FilePath As String, _
      ByVal DateTimeTaken As Date _
   ) As Boolean
   
   Dim FileNumber As Long
   Dim FileData As String
   Dim ExifPos As Long
   Dim FileSection As String
   Dim RegExp As Object
   Dim Matches As Object
   Dim DateTimeValue As String
   
   FileNumber = FreeFile
   Open FilePath For Binary Access Read Write As FileNumber
   FileData = StrConv(InputB(4000, FileNumber), vbUnicode)
   
   ExifPos = InStr(FileData, "Exif")
   If ExifPos = 0 Then Exit Function
   
   FileSection = Mid(FileData, ExifPos)
   Set RegExp = CreateObject("vbscript.regexp")
   RegExp.Global = True
   RegExp.MultiLine = True
   RegExp.IgnoreCase = True
   
   RegExp.Pattern = "[0-9]{4}:[0-9]{2}:[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\x00"
   
   On Error Resume Next
   Set Matches = RegExp.Execute(FileSection)
   On Error GoTo 0
   If Matches Is Nothing Then Exit Function
   If Matches.Count = 0 Then Exit Function
   
   DateTimeValue = Left(Matches(0).Value, 19)
   FileData = Replace(FileData, DateTimeValue, Format(DateTimeTaken, "YYYY:MM:DD HH:MM:SS"))
   
   Seek FileNumber, 1
   Put FileNumber, , FileData
   Close FileNumber

   SetPhotoDateTimeTaken = True

End Function


Aber es gab den "AEG"-Effekt, ebenso mit einem Powershell-Script von M$ (kann ich nicht mit Parametern starten).

Gibt es eine VBA - Lösung?

Vielen Dank.

mfg
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 504
Registriert: 12. Feb 2016, 18:56

Re: Photo: Aufnahmedatum ändern

Beitragvon snb » 13. Mär 2018, 09:11

Du kannst das Aufnahmedatum lesen.

Dann mittels VBA die Datei binär öffnen, das Datum (in mehrere Stellen) ersetzen und die Datei wieder binär speichern.

Aber wozu ?
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6234
Registriert: 25. Sep 2014, 16:37

Re: Photo: Aufnahmedatum ändern

Beitragvon Flotter Feger Gast » 13. Mär 2018, 09:30

Flotter Feger Gast
 

Re: Photo: Aufnahmedatum ändern

Beitragvon Gast » 13. Mär 2018, 09:39

Hallo snb,

zuerst Dank.

Eine mögliche Anwendung (für mich) ist, gescannte alte Dias auf ein angemessenes Datum zu setzen (nicht Datum des Scans), damit die Bilderverwaltungs-Software damit umgehen kann.

Es gibt aber auch Neugier und Spieltrieb.

Nach meinem Verständnis ändert der gefunden Code die binär Datei, es hat im Test allerdings nicht geklappt. (den Namespace über alle .items auszulesen ging gut, dank des Codes auf Deiner Seite)
Gast
 

Re: Photo: Aufnahmedatum ändern

Beitragvon Fen » 13. Mär 2018, 22:53

@Flotter Feger

vielen Dank, die Klasse gibt einen guten Zugriff auf die Exif.

__________________
Experten-Talk:

im Vergleich zu "Namespace" i=1, 500, ist die cls wesentlich schwieriger zu nutzen und liefert nicht (?) mehr Informtionen. Änderungen der exif's scheinen nicht möglich. Ein VB-Ansatz, der auch ein "write" verspricht ist wohl nicht nach VBA übertragbar.

Einige Firmen bieten den Service "stolen camera" an, d.h. es muss eine versteckte Identifikations - ID pro Kamera und Bild geben, die aber für meinen Kenntnisstand nicht auffindbar ist.

__________________
Falls es keine interessierten Hobby-Fotografen hier gibt, möchte ich das Thema beenden.
Fen
 

Re: Photo: Aufnahmedatum ändern

Beitragvon Flotter Feger » 13. Mär 2018, 23:34

Hallöchen Fen,

schon mal das gelesen ?
http://www.computerbild.de/artikel/cb-R ... 03331.html

Wusste ich bisher auch nicht, dass man im 'Detailbereich' im Windows Explorer auch klicken kann ... :oops:

Da kannst du alle Bilder markieren und in einem Rutsch das Datum ändern. In Win 7 geht dazu sogar ein Kalender auf ... :shock:
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1872
Registriert: 24. Okt 2016, 16:40

Re: Photo: Aufnahmedatum ändern

Beitragvon lupo1 » 14. Mär 2018, 07:20

Gast hat geschrieben:Eine mögliche Anwendung (für mich) ist, gescannte alte Dias auf ein angemessenes Datum zu setzen (nicht Datum des Scans), damit die Bilderverwaltungs-Software damit umgehen kann.


Da gibt es doch den Dateinamen, dessen Datum Du leicht ändern kannst, also 19560701120000_blabla statt 20180314072005_blabla.

In dem Falle eines falschen Kameradatums bei EXIF oder sonstigen Digitalversionen würde ich die In-Datei-Falsch-Informationen belassen und auch nur im Dateinamen ändern. Begründung: Nur so behältst Du die Information über die sekundengenauen Abstände der einzelnen Bilder, die dann ja wieder richtig sind (da gleich-verschoben-falsch minus gleich-verschoben-falsch). Das gilt auch für die Scans: Du weißt bis in alle Zeit, dass Du für 400 Scans z.B. 8:31 h gebraucht hast. Entweder als Rechtfertigung ggü jmd., oder z.B. auch als Weiterberechnungsgrundlage.
MfG (und Hallo! natürlich auch) Lupo
Benutzeravatar
lupo1
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8365
Registriert: 25. Okt 2012, 13:38

Re: Photo: Aufnahmedatum ändern

Beitragvon snb » 14. Mär 2018, 09:43

Ich verstehe nicht warum Bildbearbeitungssoftware Probleme haben könnte mit einem Erstellungsdatum :roll:
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6234
Registriert: 25. Sep 2014, 16:37

Re: Photo: Aufnahmedatum ändern

Beitragvon Fen » 14. Mär 2018, 11:09

Vielen Dank für die Kommentare,

Learnings:

XL ist mit Namespace-Abfragen bestens geeignet die Standard-Exifs auzulesen. Für Änderungen ist spezielle Foto-Software besser.

Für alle "big brother" - Freunde:

Nach der Bearbeitunge mit Adobe Lightroom werden zusätzlich xml-Codes ins jpg-File geschrieben, die teilweise die Bildbearbeitung beschreiben aber auch der Seriennummer der Kamera (sonst unsichtbar?) und eine Dokumenten-ID einbinden:

http://ns.adobe.com/xap/1.0/ <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c011 79.156380, 2014/05/21-23:38:37 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<<<<<<<<<<<<gekürzt>>>>>>>>>>>>>>>>>>>>>>>

xmp:CreateDate="2018-03-12T11:48:25.700" xmp:Label="Lila" xmp:Rating="2" xmp:MetadataDate="2015-12-28T11:49:20+01:00" aux:SerialNumber="4571767" aux:LensInfo="180/10 550/10 35/10 56/10" aux:Lens="18.0-55.0 mm f/3.5-5.6" aux:LensID="162" aux:ImageNumber="3042" photoshop:DateCreated="2015-06-28T11:48:25.70" xmpMM:DocumentID="xmp.did:d3c350fd-9f4a-8a43-8afc-2f4edd2f677f" xmpMM:OriginalDocumentID="09A1EFF02D342DB1E379AFE45902611C" xmpMM:InstanceID="xmp.iid:d3c350fd-9f4a-8a43-8afc-2f4edd2f677f" dc:format="image/jpeg" xmpNote:HasExtendedXMP="FB4EA363A3860D0A1F62A14931408F73">
<xmpMM:History>
<rdf:Seq>

<rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:d3c350fd-9f4a-8a43-8afc-2f4edd2f677f" stEvt:when="2015-12-28T11:49:20+01:00" stEvt:softwareAgent="Adobe Photoshop Lightroom 6.1.1 (Windows)" stEvt:changed="/"/>
</rdf:Seq>
</xmpMM:History>
<xmpMM:DerivedFrom stRef:documentID="09A1EFF02D342DB1E379AFE45902611C" ' < <<<< stRef:originalDocumentID="09A1EFF02D342DB1E379AFE45902611C"/>

</x:xmpmeta>


Eine Textsuche ergab keine sonstigen Treffer, also dürfte die Serien-Nr der Kamera irgendwie kodiert sein.

mfg
Fen
 

Re: Photo: Aufnahmedatum ändern

Beitragvon snb » 14. Mär 2018, 11:35

Das ist doch Standart in Explorer/eigenschaften ?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6234
Registriert: 25. Sep 2014, 16:37

Re: Photo: Aufnahmedatum ändern

Beitragvon Fennek » 14. Mär 2018, 11:48

@snb

gemeint war nicht das Model, sondern die Seriennummer der Kamera:

aux:SerialNumber="4571767"


Die Nr steht als Barcode auf der Verpackung der Kamera.

Auch die laufenden Nummer der Aufnahmen

aux:ImageNumber="3042"


ist meinse Wissens nur mit Spezialsoftware des Herstellers auszulesen.

mfg
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 504
Registriert: 12. Feb 2016, 18:56

Re: Photo: Aufnahmedatum ändern

Beitragvon snb » 14. Mär 2018, 11:55

versuch's mal:

Code: Alles auswählen
Sub M_snb()
   Open "G:\foto\2011-08-04 12.14.07.jpg" For Binary As #1
       c00 = Input(1000, #1)
   Close
   
   For j = 1 To Len(c00)
       If Asc(Mid(c00, j, 1)) > 32 And Asc(Mid(c00, j, 1)) < 123 Then c01 = c01 & Mid(c00, j, 1)
   Next

   MsgBox c01
End Sub


Ich hab zum Testen nur 1000 characters selektiert.
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6234
Registriert: 25. Sep 2014, 16:37

Re: Photo: Aufnahmedatum ändern

Beitragvon lupo1 » 14. Mär 2018, 12:30

Im Klartext werden Datümer vermutlich schon aus Platzgründen nicht gespeichert. Außerdem startet jedes Modell in einem anderen Jahr. Vermutlich werden intern nur noch 27 Jahre vorgehalten, denn bei 27 Jahren komme ich mit 9 unkomprimierten Zahlen-Stellen sekundengenau aus.

Verwende ich statt 9stelliger Zahl 4 Bytes, schaffe ich sogar 136 Jahre sekundengenau.
MfG (und Hallo! natürlich auch) Lupo
Benutzeravatar
lupo1
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8365
Registriert: 25. Okt 2012, 13:38

Re: Photo: Aufnahmedatum ändern

Beitragvon Fen » 14. Mär 2018, 12:37

@snb

ja, mit diesem Code findet die Seriennummer in der mit Lightroom bearbeiteten Datei, aber nur in den gezeigten Meta-Daten von Lightroom, nicht im Rest der Datei. Der Vergleich wäre ein jpg direkt aus der Kamera (ohne Bearbeitung), den ich sobald die Kamera wieder da ist versuchen werden.

Mit einer anderen, älteren Kamera schrieb Lightroom zwar eine Dokumenten ID, aber keine Serial-No in die bearbeitete jpg-Datei.

Ein Test mit einer 3. Kamera wird folgen.

mfg
Fen
 

Re: Photo: Aufnahmedatum ändern

Beitragvon Gast » 14. Mär 2018, 13:09

Nach Lightroom Bearbeitung

Nikon Spiegelreflex: Kamera Serien-Nr, Anzahl der gemachten Fotos, Dokumenten ID

Sony Spiegelreflex (älter): nur Dokumenten ID

Canon Powershot: nur Dokumenten ID

(der Zusammenhang mit Excel könnte sein, die jpg-Datei nach den genannten Kriterien auszulesen)

Vor der Lightroom-Bearbeitung ist keine der genannten Infos zu finden. Es ist möglich, dass die Dokumenten ID von Lightroom erstellt wird.
Gast
 

Nächste

Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste

cron