2017-05-01 2 views
2

Je suis en train d'extraire les métadonnées GPS de hex suivant ce tutoriel, mais ne peut pas comprendre pourquoi à la fin de la latitude et la longitude ont une longueur 24 et les valeurs 42 et 73: http://itbrigadeinc.com/post/2012/03/06/Anatomy-of-a-JPG-image.aspx http://www.itbrigadeinc.com/post/2012/03/16/Seeing-the-EXIF-data-for-a-JPG-image.aspxExtraction des métadonnées GPS de six pans de l'image JPG

J'ai trouvé les étiquettes de latitude et de longitude (00 02 00 05 00 00 00 00 00 02 42) et (00 04 00 05 00 00 00 00 00 02 5A). Comme je l'ai compris, si count = 3, alors les valeurs des deux devraient suivre dans les 4 derniers octets de tags. mais 02 42 et 02 5A ne sont pas "42" et "73" ...

Qui pourrait m'expliquer ce qui ne va pas?

S'il vous plaît, ne recommande pas d'outils - Je dois le faire manuellement.

Répondre

1

Vous devez également tenir compte de la taille de chaque valeur. Le nombre est trois, mais la taille de chacun est supérieure à un octet. Par conséquent, il ne rentrera pas dans les quatre octets, et ces quatre octets représentent un décalage à la valeur.

Les données GPS sont généralement stockées sous la forme de trois nombres rationnels, chaque nombre rationnel étant constitué de deux entiers de 32 bits (numérateur, dénominateur). Par conséquent, vous avez trois valeurs pour la latitude, mais chacune est de 8 octets. Les 24 octets ne rentrent pas dans la balise TIFF, donc ils sont stockés ailleurs dans le fichier, et les quatre octets que vous voyez sont un pointeur. Vous devez regarder dans la spécification pour savoir où ce pointeur est relatif, car ce n'est probablement pas le début du fichier.

Consultez mes bibliothèques d'extraction de métadonnées (en Java et C#) pour référence.

0

Apparemment, le type de données de 24 bits est un PropertyTagTypeRational https://msdn.microsoft.com/en-us/library/ms534414(v=vs.85).aspx

Indique que l'élément de données de valeur est un tableau de paires de nombres entiers non signés de long. Chaque paire représente une fraction; le premier entier est le numérateur et le second entier est le dénominateur.

La plupart du temps obtenu à partir de: Getting GPS data from an image's EXIF in C#

Ce morceau de code python pourrait avoir une bonne indication trop comment vous pouvez décoder les données http://eran.sandler.co.il/2011/05/20/extract-gps-latitude-and-longitude-data-from-exif-using-python-imaging-library-pil/