Page 1 sur 1
Métadonnées d'un jpg
Publié : sam. 02/janv./2010 13:57
par MetalOS
Salut tous le monde, je fais de la photos depuis très peut de temp et j'aimerais pouvoir me faire un petit visualiseur de photos très simple. Bon jusque là pas de problème, mais j'aimerais pouvoir extraire et afficher les métadonnées qui ce trouve dans le jpg.
Dans les métadonnées ont retrouve les informations sur le boitier utilisé, le focal, la vitesse d'obturation, le temps de pause...etc.
Je ne c'est pas comment faire avec PureBasic pour récupérer ces données. Ne faut t'il pas utiliser une lib pour pouvoir le faire. Pouvez vous m'aider ou me donner quelque pistes ? Merci d'avance.
Re: Métadonnées d'un jpg
Publié : sam. 02/janv./2010 14:26
par jbernard13
tu utilise quel appareil photos? je suppose que tu acheter LIghtRoom aussi
Re: Métadonnées d'un jpg
Publié : sam. 02/janv./2010 14:53
par MetalOS
J'utilise un reflex Nikon D3000 avec un 18/105, autrement non je ne possède pas lightroom. j'hésite entre acheter lightroom, et Capture NX de Nikon ou photoshop.
Re: Métadonnées d'un jpg
Publié : sam. 02/janv./2010 15:21
par MetalOS
J'ai trouvé ca sur le forum anglais (Auteur: Sparkie).
Code : Tout sélectionner
;- Endian procs by wilbert - Thank you
Procedure.w xchEndianW(e.w)
ProcedureReturn (e & $FF) << 8 + (e >> 8) & $FF
EndProcedure
Procedure xchEndianL(e.l)
ProcedureReturn (e & $FF) << 24 + (e & $FF00) << 8 + (e >> 8) & $FF00 + (e >> 24) & $FF
EndProcedure
Procedure GetCameraModel(file$)
ReadFile(0, file$)
; --> Bypass header
FileSeek(0, 3)
If ReadByte(0) &$FF = $E1
Header = 12
Else
Header = 30
EndIf
FileSeek(0, Header)
; --> Bytes 0-1 is word order 18761 ($4949) is Intel and 19789 ($4D4D) is Motorola
wordOrder = ReadWord(0)
If wordOrder = $4949 Or wordOrder = $4D4D
; --> Intel byte order II
; --> Motorola byte order MM
; --> Bytes 2-3 is TIFF format, it's always 42 ($2A). If not, give up.
If wordOrder = $4949
tifFormat = ReadWord(0); bytes 2-3
Else
tifFormat = xchEndianW(ReadWord(0)); bytes 2-3
EndIf
If tifFormat = $2A
; --> Bytes 4-7 is starting offset for IFD (Image File Directory)
If wordOrder = $4949
ifd1 = ReadLong(0)
Else
ifd1 = xchEndianL(ReadLong(0))
EndIf
; --> Move to start of IFD
FileSeek(0, ifd1 + Header)
; --> First 2 bytes of IFD is number of field entries
If wordOrder = $4949
nFields = ReadWord(0)
Else
nFields = xchEndianW(ReadWord(0))
EndIf
; --> Loop through all fields to get info
For i = 1 To nFields
; --> Bytes 0-1 contain the Tag for the field.
If wordOrder = $4949
currentTag = ReadWord(0)
Else
currentTag = xchEndianW(ReadWord(0))
EndIf
Select currentTag
Case $0110
cam$ = "Model: "
Case $010F
cam$ = "Make: "
EndSelect
If currentTag = $0110 Or currentTag = $010F; use $0110 For model And $010F For make
; --> Bytes 2-3 contain the field Type.
If wordOrder = $4949
fieldType = ReadWord(0)
Else
fieldType = xchEndianW(ReadWord(0))
EndIf
; --> Bytes 4-7 contain the Length of the field.
fieldLength = ReadLong(0); Bytes 4-7 contain the Length of the field.
;tiffData(currentTag)\length = fieldLength
If fieldLength <= 4
currentloc = Loc(0)
AddGadgetItem(0, -1, ReadString(0))
FileSeek(0, currentloc + 4)
Else
currentloc = Loc(0)
; --> Bytes 8-11 contain the field value (if value fits into 4 bytes
If wordOrder = $4949
fieldValue = ReadLong(0)
Else
fieldValue = xchEndianL(ReadLong(0))
EndIf
FileSeek(0, fieldValue + Header)
AddGadgetItem(0, -1, cam$ + ReadString(0))
FileSeek(0, currentloc + 4)
EndIf
Else
FileSeek(0, Loc(0)+10)
EndIf
Next
EndIf
EndIf
CloseFile(0)
EndProcedure
If OpenWindow(0, 10, 10, 300, 500, "Test", #PB_Window_SystemMenu)
ListViewGadget(0, 10, 40, 280, 440)
ButtonGadget(1, 10, 10, 100, 20, "Open File")
Repeat
event = WaitWindowEvent()
If EventGadget() = 1 And EventType() = #PB_EventType_LeftClick
fileopen$ = (OpenFileRequester("Select image", "", "JPG files (JPG)|*.jpg;*.jpeg", 0))
If fileopen$
GetCameraModel(fileopen$)
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndIf
End
Re: Métadonnées d'un jpg
Publié : mer. 06/janv./2010 9:31
par Thyphoon
si j'étais toi j'utiliserais Exiftools en ligne de commande, c'est gratuit et on fait pas mieux pour lire et ecrire des métadonnées !
http://www.sno.phy.queensu.ca/~phil/exiftool/
c'est ce que je j'utilise

Re: Métadonnées d'un jpg
Publié : mer. 06/janv./2010 11:25
par Progi1984
Re: Métadonnées d'un jpg
Publié : mer. 06/janv./2010 14:10
par Le Soldat Inconnu
ça semble super intéressant mais je pige pas comment le télécharger ....

Re: Métadonnées d'un jpg
Publié : mer. 06/janv./2010 14:14
par Thyphoon
Le Soldat Inconnu a écrit :ça semble super intéressant mais je pige pas comment le télécharger ....

les différents fichier sont là :
Re: Métadonnées d'un jpg
Publié : mer. 06/janv./2010 17:10
par Le Soldat Inconnu
J'arrive quand même à ouvrir un lien, je ne suis encore gâteux
j'ai vu les fichiers, j'arrive à voir le contenu des fichiers PB. Mais comment je fais pour télécharger chaque fichiers ? j'arrive juste à visualiser. C'est ça mon souci.
Je voulais tout récupérer pour regarder ça, car ça m'intéresse aussi de pouvoir lire les exif des jpg, notamment l'orientation de l'image.
Re: Métadonnées d'un jpg
Publié : mer. 06/janv./2010 17:54
par cederavic
Pour les fichier PB, tu click sur le "nom", ça t'affiche la source puis click droit sur View Raw File à droite et Enregistre la cible du lien sous...
Bien l'bonjour à toi au passage

Re: Métadonnées d'un jpg
Publié : jeu. 07/janv./2010 11:35
par MetalOS
Merci pour vos réponses, je vais regarder ca de suite

Re: Métadonnées d'un jpg
Publié : jeu. 07/janv./2010 11:55
par Progi1984
cederavic a écrit :Pour les fichier PB, tu click sur le "nom", ça t'affiche la source puis click droit sur View Raw File à droite et Enregistre la cible du lien sous...
Bien l'bonjour à toi au passage

Que dire de plus ?