"Bild aufgenommen am" auslesen

  • Moin,

    ich brauche super dringend Hilfe bin am verzweifeln .Ich habe eine Digitalkamera und wollte nun jedes Datum (wann das Bild aufgenommen wurde) in ein Array speichern.
    Mit FileGetTime geht das nicht weil die Bilder später auf den Rechner Kopiert werden und beim nächsten mal wenn die Kamera angesteckt wird werden die Datums vergliechen ob das Foto schon auf der Festplatte ist.
    Ich brauche nur eben die genaue Zeit wann das Bild aufgenommen wurde.

    Ich hoffe ihr könnt mir helfen

    :thumbup:

    Einmal editiert, zuletzt von bobekos (16. Juli 2012 um 12:51)

  • Benutz FIleGetTime mit dem zweiten Paramter auf 1 dann bekommst das erstelldatum also so:

    [autoit]

    FileGetTime($file, 1)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Benutz FIleGetTime mit dem zweiten Paramter auf 1 dann bekommst das erstelldatum also so:

    [autoit]

    FileGetTime($file, 1)

    [/autoit]


    Ja das funktioniert ja nicht der verändert das Datum irgendwie beim Kopiervorgang

    :thumbup:

  • Ok dann wirst das wohl leider nicht rausbekommen wenn das Erstelldatum geändert wird.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Spoiler anzeigen
    [autoit]

    $Info = _FileGetProperty(@ScriptDir & "\Test.JPG", "Bild aufgenommen am")
    ConsoleWrite($Info & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name.....: _FileGetProperty
    ; Description.......: Returns a property or all properties for a file.
    ; Version...........: 1.0.2
    ; Change Date.......: 05-16-2012
    ; AutoIt Version....: 3.2.12.1+
    ; Parameter(s)......: $S_PATH - String containing the file path to return the property from.
    ; $S_PROPERTY - [optional] String containing the name of the property to return. (default = "")
    ; Requirements(s)...: None
    ; Return Value(s)...: Success: Returns a string containing the property value.
    ; If $S_PROPERTY is empty, an two-dimensional array is returned:
    ; $av_array[0][0] = Number of properties.
    ; $av_array[1][0] = 1st property name.
    ; $as_array[1][1] = 1st property value.
    ; $av_array[n][0] = nth property name.
    ; $as_array[n][1] = nth property value.
    ; Failure: Returns 0 and sets @error to:
    ; 1 = The folder $S_PATH does not exist.
    ; 2 = The property $S_PROPERTY does not exist or the array could not be created.
    ; 3 = Unable to create the "Shell.Application" object $objShell.
    ; Author(s).........: - Simucal <[email='Simucal@gmail.com'][/email]>
    ; - Modified by: Sean Hart <[email='autoit@hartmail.ca'][/email]>
    ; - Modified by: teh_hahn <[email='sPiTsHiT@gmx.de'][/email]>
    ; - Modified by: BrewManNH
    ; URL...............: http://www.autoitscript.com/forum/topic/..…view__findpost_
    ; Note(s)...........: Modified the script that teh_hahn posted at the above link to include the properties that
    ; Vista and Win 7 include that Windows XP doesn't. Also removed the ReDims for the $av_ret array and
    ; replaced it with a single ReDim after it has found all the properties, this should speed things up.
    ;===============================================================================
    Func _FileGetProperty(Const $S_PATH, Const $S_PROPERTY = "")
    Local Const $objShell = ObjCreate("Shell.Application")
    If @error Then Return SetError(3, 0, 0)
    Local $iPropertyCount = 300 ; arbitrary number used, Windows 7 only returns 289 properties, Windows XP only returns 38 (future proofing)
    If StringLeft($S_PATH, 1) = '"' Then StringTrimLeft($S_PATH, 1) ; deletes any quotes around the path\filename, otherwise will cause errors
    If StringRight($S_PATH, 1) = '"' Then StringTrimRight($S_PATH, 1) ; deletes any quotes around the path\filename, otherwise will cause errors
    If Not FileExists($S_PATH) Then Return SetError(1, 0, 0)
    Local Const $S_FILE = StringTrimLeft($S_PATH, StringInStr($S_PATH, "\", 0, -1))
    Local Const $S_DIR = StringTrimRight($S_PATH, StringLen($S_FILE) + 1)
    Local Const $objFolder = $objShell.NameSpace($S_DIR)
    Local Const $objFolderItem = $objFolder.Parsename($S_FILE)
    If $S_PROPERTY Then
    For $I = 0 To $iPropertyCount
    If $objFolder.GetDetailsOf($objFolder.Items, $I) = $S_PROPERTY Then Return $objFolder.GetDetailsOf($objFolderItem, $I)
    Next
    Return SetError(2, 0, 0)
    EndIf
    Local $av_ret[300][2] = [[1]]
    For $I = 1 To $iPropertyCount + 1
    If $objFolder.GetDetailsOf($objFolder.Items, $I) Then
    $av_ret[$I][0] = $objFolder.GetDetailsOf($objFolder.Items, $I - 1)
    $av_ret[$I][1] = $objFolder.GetDetailsOf($objFolderItem, $I - 1)
    $av_ret[0][0] += 1
    EndIf
    Next
    ReDim $av_ret[$av_ret[0][0] + 1][2]
    If Not $av_ret[1][0] Then Return SetError(2, 0, 0)
    Return $av_ret
    EndFunc ;==>_FileGetProperty

    [/autoit]
  • Hier ein Beispiel mit einer EXIF-UDF (Original mit Fehler im englischen Forum gefunden), falls es sich um JPEG-Bilder handelt:
    autoit.de/wcf/attachment/15936/
    autoit.de/wcf/attachment/15938/

    Edit: funkey's Lösung klappt bei mir auch, nur muss bei mir der zweite Parameter "Aufnahmedatum" lauten !

    Dateien

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (11. Juli 2012 um 17:27)