vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Bildinfo: Aufnahmedatum 
Autor: Dikn
Datum: 01.01.18 16:19

Hallo!
wie kann ich das Aufnahmedatum einer JPG-Datei erhalten?
Erstellungsdatum und Änderungsdatum lese ich aus mit

Public Class Form1
  Private Sub Button1_Click( sender As System.Object,  e As System.EventArgs) _
    Handles Button1.Click
    Dim fso As Object = CreateObject("Scripting.FileSystemObject")
    Dim fFile As Object = fso.GetFile("C:\...\....JPG")
 
    tb1.Text = "Aufnahmedatum:    " ' & ??????????  Ursprung, Aufnahmedatum 
    ' ???????????
    tb2.Text = "Erstellungsdatum: " & DateTime.Parse(fFile.DateCreated)
    tb3.Text = "Änderungsdatum:   " & DateTime.Parse(fFile.DateLastModified)
  End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: effeff
Datum: 01.01.18 18:49

Du musst das Aufnahmedatum aus den EXIF-Daten der Datei holen. Hier ist ein kleines Beispiel nur für das Aufnahmedatum:

        Dim Datei As String = "D:\temp\20160828_Tomate\20160828_Canon EOS" & _
          "6D_10486.jpg"
        Dim Aufnahmeatum As String = ""
        Dim enc As Encoding = Encoding.Default
 
        Dim Image As Image = Image.FromFile(Datei)
 
        For Each Info As PropertyItem In Image.PropertyItems
            Select Case Info.Id.ToString("X")
                Case "9003"
                    Aufnahmeatum = enc.GetString(Info.Value, 0, Info.Len - 1)
            End Select
        Next
 
        Image.Dispose()
 
        MessageBox.Show(Aufnahmeatum)

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: effeff
Datum: 01.01.18 21:17

Und da wir gerade dabei sind: Anstelle des FileSystemObjects könntest Du dann auch gleich native .NET-Methoden verwenden, um die von Dir gewünschten Daten herauszufinden. Das wäre für das Erstellungsdatum einer Datei sowie das Datum Ihrer letzten Änderung z. B. wie folgt:

        Dim Datei As String = "D:\temp\20160828_Tomate\20160828_Canon EOS" & _
          "6D_10486.jpg"
 
        Dim Dateierstellungsdatum As DateTime = System.IO.File.GetCreationTime( _
          Datei)
        Dim LetzteAenderungsdatum As DateTime = System.IO.File.GetLastWriteTime( _
        Datei)
 
        MessageBox.Show("Dateierstellungsdatum: " & Dateierstellungsdatum & _
          vbCrLf & "Letzte Änderung: " & LetzteAenderungsdatum)

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: Dikn
Datum: 06.01.18 12:45

Hallo effeff!

Wenn auch verspätet… (war unterwegs)
Vielen Dank für Deinen Tipp!!!

Habe ihn ausprobiert – funktioniert!

Fragen:
- hat Info.Id.ToString("X") Vorteile?
- wie kann ich Datum/Zeit einfacher anpassen (2017:09:11 12:04:20 -> 11.09.2017 12:04:20)

Dim Image As Image = Image.FromFile("C:\...\xxx.JPG")
  Dim propItem As Object
  Dim strDate, strDate1, strDate2 As String 
 
  propItem = Image.GetPropertyItem(36867) 
             ' 36867 ("DateTimeOriginal") = ID des abzurufenden 
             ' Eigenschaftenelements                                                                     
  strDate = System.Text.Encoding.Default.GetString(propitem.Value, 0, _
    propitem.Len - 1)
 
  strDate2= strDate.Substring(strDate.IndexOf(" "), (strDate.Length - _
    strDate.IndexOf(" ")))
  strDate1 = strDate.Substring(0, 10)
  strDate1 = strDate1.Replace(":", "-")
  tb1.Text = DateTime.Parse(strDate1 + strDate2)
EXIF Reference: http://nicholasarmstrong.com/2010/02/exif-quick-reference/
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: effeff
Datum: 06.01.18 21:14

Anpassen kannst Du das auf unterschiedlichste Art... Eine davon ist z. b. diese:

        Dim Datum As String = "2017:09:11 12:04:20"
 
 
        Dim arr() As String = Datum.Split(" ")
        Dim arr1() As String = arr(0).Split(":")
 
        Array.Reverse(arr1)
 
        Datum = System.String.Join(":", arr1) & " " & arr(1)
 
        MessageBox.Show(Datum)

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: Dikn
Datum: 08.01.18 10:03

Hallo effeff!
Dank auch für diesen Tipp!
Mit Arrays kenne ich mich nicht gut aus, insbesondere die Funktionen Reverse() und Join() waren mir unbekannt.
Nochmals: Vielen Dank!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: HenryV
Datum: 08.01.18 14:33

Ich finde die DateTime.ParseExact-Methode zum konvertieren ganz nützlich.
Dim sDatum As String = "2017:09:11 12:04:20"
Dim sFormat As String = "yyyy:MM:dd HH:mm:ss"
Dim dResult As Date = Date.ParseExact(sDatum, sFormat, _
  Globalization.CultureInfo.InvariantCulture)
MessageBox.Show(dResult.ToString)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bildinfo: Aufnahmedatum 
Autor: Dikn
Datum: 13.01.18 10:05

Hallo HenryV!

Wenn auch wieder verspätet…
Auch Dir vielen Dank für den Tipp!!!

Habe ihn gleich getestet -> funktioniert wunderbar!

Globalization.CultureInfo.InvariantCulture war mir bisher völlig unbekannt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel