Métadonnées d'un jpg
Métadonnées d'un jpg
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.
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.
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
Re: Métadonnées d'un jpg
tu utilise quel appareil photos? je suppose que tu acheter LIghtRoom aussi
Jbernard13
Re: Métadonnées d'un jpg
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
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
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

http://www.sno.phy.queensu.ca/~phil/exiftool/
c'est ce que je j'utilise


- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Re: Métadonnées d'un jpg
Pour les Exifs, utilise RWFreeImage du projet RWrappers.
C'est un wrapper de FreeImage.
Lien : http://code.google.com/p/rwrappers/sour ... /FreeImage
C'est un wrapper de FreeImage.
Lien : http://code.google.com/p/rwrappers/sour ... /FreeImage
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: Métadonnées d'un jpg
ça semble super intéressant mais je pige pas comment le télécharger .... 

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: Métadonnées d'un jpg
les différents fichier sont là :Le Soldat Inconnu a écrit :ça semble super intéressant mais je pige pas comment le télécharger ....
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: Métadonnées d'un jpg
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.

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.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: Métadonnées d'un jpg
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
Bien l'bonjour à toi au passage

Re: Métadonnées d'un jpg
Merci pour vos réponses, je vais regarder ca de suite 

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Re: Métadonnées d'un jpg
Que dire de plus ?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
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net