tools tool site online official forense exiftool file delphi gps jpeg

file - site - exit tool download



Lea la información de Exif GPS usando Delphi (1)

Necesito obtener información de geolocalización de mis fotos. Lat / Lon y GPSVersion. Ya he encontrado información relacionada con esta pregunta, comparé diferentes encabezados EXIF ​​y encontré un volcado hexadecimal que me da coordenadas, ahora necesito obtenerlo del archivo.

La pregunta puede parecer muy simple. ¿Cómo abro un archivo JPEG en Delphi para obtener los volcados hexadecimales necesarios?

Ya intenté leer Chars e Integers, pero nada funcionó. Me gustaría no utilizar ninguna biblioteca externa para esta tarea si es posible.

Esta es básicamente mi principal pregunta, pero estaré muy feliz si alguien pudiera responder una más.

¿Hay alguna manera fácil de buscar etiquetas GPS sin buscar archivos específicos en el archivo? Ahora estoy buscando una combinación extraña 12 00 02 00 07 00, que realmente funciona. He leído la documentación de EXIF, pero no pude entender la cosa con las etiquetas de GPS.

Gracias de antemano. Eugene


Si no necesita bibliotecas externas, puede hacerlo con TFileStream y una matriz de bytes. Lo he hecho en un proyecto para obtener la ''fecha de toma de foto'', las coordenadas lat-long de GPS son solo otro campo en el encabezado EXIF. No tengo el código aquí pero el método es directo: una vez que tienes un TFileStream en el archivo JPEG:

  • Lea los primeros 2 bytes, compruebe que es de hecho $ FF $ D8 (solo para asegurarse de que es un archivo JPEG válido)
  • Lea los siguientes 2 bytes, verifique si son $ FF $ E1
  • Si es así, lea 4 bytes y vea si es ''Exif'' ($ 45 $ 78 $ 69 $ 66)
  • Lo que sigue es $ 00 $ 00 y un encabezado TIFF de 8 bytes que contiene información general como endianness , seguido de las etiquetas EXIF ​​que necesita para trabajar y tomar las que necesita, hice una búsqueda rápida y encontré una lista aquí: http: / /www.exiv2.org/tags.html

Como es seguro suponer que los datos EXIF ​​están en los primeros kilobytes del archivo JPEG, puede leer tanto en una matriz de bytes (o TMemoryStream) y procesar los datos allí, lo que debería funcionar mejor que las lecturas pequeñas separadas de un TFileStream.