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 no lo es, dependiendo de qué segmento sea, lea dos bytes más (o una palabra) y omita tantos bytes (llamando al método Seek de la secuencia), hay una lista de segmentos aquí: https://en.wikipedia.org / wiki / JPEG # Sintaxis_y_estructura ; luego repite
- 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.