Exif Datum erzeugen

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#22
AW: Exif Datum erzeugen

Hallo Mecki14,

bei DateTime kannst Du nicht einfach Date einsetzen.
Das Exif-Zeitformat ist IMMER wie folgt: JJJJ:MM:DD hh:mm:ss
Wenn Du einfach Date einsetzt wird irgendein Zeit-String eingesetzt, der ja nach System unterschiedlich als default eingesetzt ist.
Foglich musst Du es auf das Exif-Zeit-Format bringen.
Z. B. so:
Code:
FF_SetExifTag "DateTime", ConvertDateTime2Exif(Now)
...
'Formatkonvertierung
Function ConvertDateTime2EXIF(vDateTime)
	ConvertDateTime2EXIF = _
	CStr(Year(vDateTime)) & ":" & _
	FormatNum(Month(vDateTime), 2) & ":" & _
	FormatNum(Day(vDateTime), 2) & " " & _
	FormatNum(Hour(vDateTime), 2) & ":" & FormatNum(Minute(vDateTime), 2) & ":" & FormatNum(Second(vDateTime), 2)
End Function
'Erzeugt führende Nullen für Zahlen
Function FormatNum(vNumber, lDigits)
	If Len(CStr(vNumber)) >= lDigits Then
		FormatNum = CStr(vNumber)
		Exit Function
	End If
	FormatNum = Right(String(lDigits, "0") & CStr(vNumber), lDigits)
End Function
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
#23
AW: Exif Datum erzeugen

Hallo Mecki14,
bei DateTime kannst Du nicht einfach Date einsetzen.
Das Exif-Zeitformat ist IMMER wie folgt: JJJJ:MM:DD hh:mm:ss
Man lernt doch nie aus. Ich habe Deinen Code nachvollziehen können und habe mir erlaubt, ihn oben einzusetzen. Dank Deiner Unterstützung wird es jetzt hoffentlich funktionieren.
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#24
AW: Exif Datum erzeugen

Man lernt doch nie aus. Ich habe Deinen Code nachvollziehen können und habe mir erlaubt, ihn oben einzusetzen. Dank Deiner Unterstützung wird es jetzt hoffentlich funktionieren.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function FormatNum(argNumber, argDigits)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

If Len(argNumber) >= argDigits Then
FormatNum = argNumber
Exit Function
End If

FormatNum = Right(String(argDigits,"0") & argNumber,argDigits)

End Function

Das Gecaste sieht zwar sauber aus, macht aber nicht viel Sinn, wenn nicht unbedingt erforderlich. String-Anweisungen und -Operatoren erzwingen interne Typwandlung, externes Casten erfordert weit mehr Rechenaufwand.
Sieh Dir den Rest von dem Code daraufhin vielleicht besser noch mal an.
Es ist guter Stil, seine Funktionsargumente als solche kenntlich zu benennen - bei langen Funktionsblöcken liest es sich leichter.
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
#25
AW: Exif Datum erzeugen

Das Gecaste sieht zwar sauber aus, macht aber nicht viel Sinn, wenn nicht unbedingt erforderlich. String-Anweisungen und -Operatoren erzwingen interne Typwandlung, externes Casten erfordert weit mehr Rechenaufwand.
Die Diskussion überfordert mich total. W.P. ist da sicher der bessere Ansprechpartner.
Ich selbst habe mir vor Jahren mal ein paar Grundkenntnisse in VB angeeignet und bin durch FixFoto dazu gekommen, diese auf Skripte anzuwenden. Dabei versuche ich durch Analyse von vorhandenen Skripten zu lernen und bediene mich ansonsten der Referenz in der FixFoto-Hilfe und der WINDOWS-Skript-Dokumentation V5.6.
Wenn mir jemand eine leicht verständliche Einführung empfehlen kann, würde ich dieser gerne folgen.
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#26
AW: Exif Datum erzeugen

Wenn mir jemand eine leicht verständliche Einführung empfehlen kann, würde ich dieser gerne folgen.
Sehr zu empfehlen sind die Scripting - Bücher von Tobias Weltner (bei Franzis) und Holger Schwichtenberg (bei Addison Wesley z.B). Von Weltner gibt es ausgesprochen gute Anfängerbücher. Auch zu empfehlen ist "Windows Scripting Guide" von Peter G. Aitken (bei Markt und Techik). Alle Bücher kann man versuchen bei Amazon gebraucht zu bekommen, dann sind sie weitaus billiger.
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.810
Standort
Düsseldorf
Trophäen
einige {*} {!} * !
#28
AW: Exif Datum erzeugen

Vielen Dank für die Bücher-Tips. Ich habe gerade bei Amazon
"Windows Scripting - Der Einsteiger-Workshop" von Tobias Weltner
bestellt. Ich bin gespannt!
Der Tip mit booklooker war zwar interessant, aber in diesem Fall war der Kauf unter Berücksichtigung der Versandkosten bei Amazon günstiger.
 
Dabei seit
27.01.06
Beiträge
38
Standort
Holzkirchen
#29
AW: Exif Datum erzeugen

Hallo,

hab jetzt das Teil gefunden. Im Boost Verzeichnis hesst das File ReduceExif.js. Dann F11 Button automatisch konfigurieren. Aber kein Eintrag unter Exif mit reduceExif. Kann es sein das es dort "kopiere Datum" heißt?
Grüße
Thomas
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#31
AW: Exif Datum erzeugen

Hallo Jochen,

mal komplett OT:
Also mal durchgetestet:
Das Einzige, was einen zeitlichen Unterschied hervorruft ist folgende Zeile:
Len(argNumber) vs. Len(CStr(vNumber))
Dies kommt daher, dass beim Casten temporär eine Umrechnung als String wirklich explizit erfolgt. Übrigens bringt es auch nichts, extra eine Variable anzulegen, der eine gekastete Nummer übergeben bekommt. Die Kopieraktion dauert wesentlich länger.
Das Fatale an dieser Zeile ist: Sie funktioniert bei Dir so nur in VBScript, aber nicht in VBA oder VB, da sonst die Datenbreite der Variable zurückgegeben wird. Mal abgesehen davon, dass es dort den Format-Befehl gibt.
Alle anderen Casts erzeugen keinen zeitlichen Unterschied, wobei die unveränderte Rückgabe bei mir immer einen String liefern würde, egal ob die Rückgabe der Funktion per Definition generell als String gecastet wird oder nicht.
Mit Vorgabe von arg... etc. hast Du sicher recht. Mir hilft es aber mehr den gewollten Datentyp anzugeben. Lediglich bei extrem kritischen unabhängigen Funktionen oder generell Klassenvariablen werden die internen Variablen mit einem f_... bzw. mv_ -Vorsatz gekennzeichnet.

Ansonsten verlasse ich mich auf den Gültigkeitsbereich der Variablen und Option Explicit. Allerdings achte ich darauf, dass auf Globaler Ebene nie all zu viele und vor alle nie einfache Variablen stehen, wie z. B. "i"(außer in kleinen Test-Scripts). Meist erhalten globale Variablen bei mir den Vorsatz g_... oder nur g... z. B. bei gDebug.
Ausnahmen: fso, Dlg (Für Hauptdialog bei FF-Scripten, da meist spezielle Informationen darin enthalten sind), oSh und oINI
 
Dabei seit
27.01.06
Beiträge
38
Standort
Holzkirchen
#32
AW: Exif Datum erzeugen

Hallo,

danke erst mal. Hab nun das Script mit PS-PAd und in Unterordner Batch abgelegt. Im Scripot Editor ist es auch drin. Allerdings nicht da wo ich es brauche. Sollte als letzter Punkt in einer Stapeverarbeitung sein. Also zur Auswahl stehen bei den Punkten Stapelverarbeitung. EIne Abfrage ist hier auch eher ungünstig, möchte das ja im Stapel mit mehreren Fotos laufen lassen.
Grüße
Thomas
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#33
AW: Exif Datum erzeugen

Hallo Thomas,

Skripte für die Stapelverarbeitung sind spezielle Skripte(eigentlich Skript-Schnipsel), die ausschließlich in JScript geschrieben sind.
Dieses Skript läßt sich nicht in die Stapelverarbeitung einbinden. Da nützt es auch nichts, es nach ...\Batch zu verschieben.
Es wird über F10 gestartet, nachdem Du Deine Bilder markiert hast.
 

eike

Mitglied
Dabei seit
23.12.07
Beiträge
1.654
Standort
Hamburg-Moorburg
#34
Exif Datum erzeugen aus dem Dateidatum

Ich häng mich hier mal dran, weil das Thema am nächsten an meinem Wunsch ist.

Meine erste Digi, die Camedia 1400XL hat schöne Bilder gemacht, kannte aber noch kein EXIF. Ich bin dabei mein Archiv neu zu ordnen, wobei EXIF und IPTC eine gewissen Rolle übernehmen sollen.

Ich habe festgestellt, dass meine Sicherungen zum großen Teil noch die originalen Dateidaten besitzen, die ich mir zu Nutze machen möchte, indem ich wenigstens das richtige Aufnahmedatum nach EXIF portiere. Die Zeit mag dann der Umbenennung und Sortierung dienen.

Mir fehlt hierzu ein einfaches Skript, mit dem ich verzeichnisweit in JPEGs
  • leere EXIF-Felder erzeuge,
  • das Dateidatum des jeweiligen JPEG-Files lese (FF_GetFileDate),
  • hieraus eine EXIF-Aufnahmezeit (DateTimeOriginal) baue
  • diese in EXIF eintrage.

[edit]
Anfrage gelöscht, weil sich gerade extern eine Lösung mit ExifViewer ergeben hat. Die Oberfläche wirkt zwar altbacken, ist bis 2007 aktuell gehalten (aber der Installer auf Vista gepflegt) und wirksam, wie es nach dem ersten Test scheint.
 
Zuletzt bearbeitet:
Oben