Recuperare dati exif su posizione gps da immagini

di Walterbotanico il
7 risposte

Buongiorno a tutti, ho trovato la routine che riporto qui sotto che mi estrapola alcuni dati exif dalle immagini presenti in una cartella, volevo chiedere se conoscete anche come recuperare la posizione gps perchè in giro per il web non ho trovato nulla.

grazie mille

</code>

Sub Dati_File_Scelto()
   MsgBox "Autore David Crowell. Adattamenti e implementazioni di Riccardo UFILUGELLI"


   Percorso = ActiveWorkbook.Path
   
   Percorso = "c:\magazzino"
   Percorso = InputBox("Inserire il nome di un percorso per visualizzare le proprietà delle immagini presenti", "Visualizzazione File", Percorso)
   Tipo = "*.JPG"
   Tipo = InputBox("Inserire il Tipo di file che si vuole visualizzare", "Scelta Tipo File", Tipo)
   Range("A2:h2").Select
   Range(Selection, Selection.End(xlDown)).Select
   Selection.ClearContents
   Range("A1").Select
   
   nome = Percorso & "\" & Tipo
   f = Dir(nome)
   i = 2
   Cells(i, 1) = f
   Nome_File = f
   nome = Percorso & "\" & Nome_File 'f
       If UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "JPG" Or _
           UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "BMP" Or _
           UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "GIF" Or _
           UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "PNG" Then
           
           ReadImageInfo (nome)
           Scrivi_Proprietà
       End If
   Cells(i, 2) = FileDateTime(nome)
   Cells(i, 3) = FileLen(nome)
   Cells(1, 4) = "Tipo Immagine"
   Cells(1, 5) = "Altezza"
   Cells(1, 6) = "Larghezza"
   Cells(1, 7) = "Profondità in bit"
   For i = 3 To 20000
       On Error GoTo continua:
       Cells(i, 1) = Dir
       Nome_File = Cells(i, 1)
       nome = Percorso & "\" & Nome_File
       Cells(i, 2) = FileDateTime(nome)
       Cells(i, 3) = FileLen(nome)
       If UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "JPG" Or _
           UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "BMP" Or _
           UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "GIF" Or _
           UCase(Mid(Nome_File, Len(Nome_File) - 2, 3)) = "PNG" Then
           
           ReadImageInfo (nome)
           Scrivi_Proprietà
       End If
   Next i
continua:
End Sub
Sub Scrivi_Proprietà()
   Select Case m_ImageType
       Case 1
           Tipo = "GIF"
       Case 2
           Tipo = "JPG"
       Case 3
           Tipo = "PNG"
       Case 4
           Tipo = "BMP"
       Case Else
           Tipo = "N/D"
   End Select
   Cells(i, 4) = Latitudine
   Cells(i, 5) = m_Height
   Cells(i, 6) = m_Width
   Cells(i, 7) = m_Depth

End Sub

7 Risposte

  • Inserisci il codice tra tag CODE.

    E comunque manca la funzione ReadImageInfo che è quella che interessa

    P.S. Questa linea

    Cells(i, 4) = Latitudine

    deve essere stata una tua maldestra prova dato che doveva essere

    Cells(i, 4) = m_ImageType

  • 27/02/2023 - oregon ha scritto:


    Inserisci il codice tra tag CODE.

    E comunque manca la funzione ReadImageInfo che è quella che interessa

    P.S. Questa linea

    Cells(i, 4) = Latitudine

    deve essere stata una tua maldestra prova dato che doveva essere

    Cells(i, 4) = m_ImageType

    Esatto, mi sono improvvisato in un tentativo come giocare al superenalotto

  • 1. non e' detto che l'immagine abbia i dati GPS. Ci sono SE la macchina fotografica ha un GPS e SE e' stato indicato di integrarli, oppure sono stati integrati in una fase successiva. 

    2. che sappia io, il piu' potente tool di estrazione dati exif e' un tool a a linea di comando

    exiftool

    https://exiftool.org/

  • Se non ci sono i tag GPS si deduce dal contenuto del file

  • Ciao, io faccio così:

    uso exiftool come dice “migliorabile” e il codice è grossomodo questo qui:

        Dim objexif As New ExifReader
        Dim txtExifInfo As String
    '
        ff = Path & File.Value
        objexif.Load ff
        With lstExif
        .AddItem "GPSLatitude: " & GPSExifReader.OpenFile(ff).GPSLatitudeDecimal
        .AddItem "GPSLongitude: " & GPSExifReader.OpenFile(ff).GPSLongitudeDecimal
        .AddItem "GPSAltitude: " & GPSExifReader.OpenFile(ff).GPSAltitudeDecimal
    	end with

    Questo codice lo uso all'interno di un mio file di access .mdb, quindi vintage, non si dice più “vecchio”, ma prima ho dovuto inserire ben 4 moduli di classe che penso troverai all'indirizzo indicao da “migliorabile”.

    Certamente dovrai integrarlo con la parte di codice che hai già scritto, quella riguardante il tipo file che siano propio jpg, bmp, ecc…

    Spero sia stato utile.

    Ciao

  • Penso che possa usare anche solo ExifReader senza integrare il proprio codice

Devi accedere o registrarti per scrivere nel forum
7 risposte