(.NET) LIRE ET ÉCRIRE LES METADONNEES EXIF, IPTC, PNG, GIF (FORMAT TIFF, JPEG, P
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
4 août 2006 à 22:38
JojoBernard -
20 oct. 2015 à 20:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Seul programme me permettant de modifier / ajouter la date de prise de vue (exif).
Merci.
Dommage que je ne connais pas ce langage, j'aurais bien fait une fonction qui récupère la date de modification (dans les propriétés de l'image) pour la mettre sur la date de prise de vue (exif)
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 8 mai 2011 à 14:48
----------------------------------------------
Extrait de ce site (modification de la date 0x9003 DateTimeOriginal)
Encoding _Encoding = Encoding.UTF8;
Image theImage = new Bitmap(m_currImageFileTemp);
PropertyItem propItem36867 = theImage.GetPropertyItem(36867);
foxvivi
Messages postés4Date d'inscriptionjeudi 15 décembre 2005StatutMembreDernière intervention20 décembre 2006 20 déc. 2006 à 17:31
Re,
J'ai temporairement regler le probleme en faisant un try catch dans la methode GetDataFormatted de la class CIPTCTag. Mais je pense qu'on peu faire beaucoup que ma bidouille. Sinon moi j'utilise Fotostation pro, et l'on peu rajouter des champs personnalisés, donc est il possible de pouvoir les lire comme autre champs ?
Merci d'avance pour ta réponse ShareVB et merci encore pour ces class tres pratiques.
foxvivi
Messages postés4Date d'inscriptionjeudi 15 décembre 2005StatutMembreDernière intervention20 décembre 2006 20 déc. 2006 à 15:58
Bonjour,
Dabord, bravo pour le travail effecuter, par contre lors qu'une photo à des infos (IPTC), impossible de les afficher,il y a une exception non géer. voici le message : "La résolution de surcharge a échoué, car aucun 'GetDataFormatted' accessible n'accepte ce nombre d'arguments." à la ligne 104.
Merci d'avance pour la modif.
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 19 déc. 2006 à 19:27
salut,
merci...ca devrait être corrigé...
ShareVB
Atmanjeck
Messages postés1Date d'inscriptionvendredi 15 décembre 2006StatutMembreDernière intervention15 décembre 2006 15 déc. 2006 à 17:20
Bons après-midi,
Félicitations et merci pour ce travail superbe. Ai un problème, en frmIPTC.vb, fillInfoIPTC, la ligne str_Renamed = m_IPTC.Tags.Item(x).GetDataFormatted(ten, tfr) il donne une erreur "Overload resolution failed because no accessible 'GetDataFormatted 'accepts this number of arguments." GetDataFormatted paraît ne pas exister.
Merci et pardon pour ecrire le française tres mal...
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 6 août 2006 à 12:21
salut,
je précise quand même que les commentaires d'entêtes de méthodes (et autres) sont un peu foireux parce qu'il vienne de la première version VB6 procédural qui je j'ai modifiée en objet puis en VB.Net...bref, les paramètres ont un peu changé...
pour s'y retrouver :
-> il y a les cinq classes de fichiers gérés CBMP, CGIF, CJPEG, CPNG et CTIFF
-> toutes les classes (à peu près) dérivent de CEndianRW (classe de lecture écriture de données Little Endian ou Big Endian
-> pour PNG, on a les classes CzTXt, CtEXt, CiTXt qui dérivent de CTextChunk (infos textuelles) et CpHYS, CtIME et CIHDR (qui représente d'autres infos intéressantes). Toutes ces classes dérivent de CChunk parce que ceux sont des chunks PNG...
-> pour GIF, il y a CGIFExtension qui représente une extension dans un fichier GIF
-> pour TIFF et JPEG, il contiennent un membre CExif et CIPTC. Pour CJPEG, il contient un CJFIF et un CJPEGComment et une liste de CMarker...
-> pour EXIF, les classes CExifJPEG et CExifTIFF représentent les données EXIF suivant le type de fichier (les entêtes sont différentes). Elles dérivent de CExif (qui contient toutes les méthodes de manipulation de EXIF sous sa forme Générale.
--> CExif contient un à plusieurs CIFD (avec différents noms) qui contiennent des dossiers CExifDirEnt qui contiennent les tags et les informations EXIF.
--> La classe CMakerNote hérite de CIFD car en général il s'agit d'une forme particulière d'IFD contenu dans les informations d'un tag
-> Enfin, la classe CImage est une classe générale qui instancie le bon type de fichier et renvoie la classe en question (CJPEG...) dans ImageProps...
Je sais que ca ne doit pas être beaucoup plus clair...mais bon...
Références : www.exif.org et www.iptc.org...
ShareVB
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006 5 août 2006 à 04:43
Génial,
C'est exactement ce que je cherchais !
Par contre c'est pas super évident de se retrouver la dedan
9/10 :) et encore merci
PY
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 4 août 2006 à 22:38
Ah...enfin une source vraiment interessant depuis le début des grandes vacances :)
Merci pour les commentaires sans euh je m'y serais pas retrouver je pense.
Excellente source +1
20 oct. 2015 à 20:55
Merci.
Dommage que je ne connais pas ce langage, j'aurais bien fait une fonction qui récupère la date de modification (dans les propriétés de l'image) pour la mettre sur la date de prise de vue (exif)
8 mai 2011 à 14:48
7 mai 2011 à 16:46
Je débute en VB et je voudrais juste récupérer la date de prise de vue.
Comment écrire la fonction suivante :
private function DatePriseDeVue (sCheminComplet as String) as Date
--- code ---
DatePriseDeVue = ---
end function
Merci pour votre aide.
Cordialement,
Emmeline.
21 févr. 2009 à 23:09
Sur les proprietes des images sont maintenant gerees dans la classe dotnet image
http://www.codeproject.com/KB/graphics/EXIF_tag_Editor.aspx
----------------------------------------------
Extrait de ce site (modification de la date 0x9003 DateTimeOriginal)
Encoding _Encoding = Encoding.UTF8;
Image theImage = new Bitmap(m_currImageFileTemp);
PropertyItem propItem36867 = theImage.GetPropertyItem(36867);
propItem36867.Value = _Encoding.GetBytes(m_textPropertyValue.Text + '\0');
theImage.SetPropertyItem(propItem36867);
theImage.Save(m_currImageFile);
20 déc. 2006 à 17:31
J'ai temporairement regler le probleme en faisant un try catch dans la methode GetDataFormatted de la class CIPTCTag. Mais je pense qu'on peu faire beaucoup que ma bidouille. Sinon moi j'utilise Fotostation pro, et l'on peu rajouter des champs personnalisés, donc est il possible de pouvoir les lire comme autre champs ?
Merci d'avance pour ta réponse ShareVB et merci encore pour ces class tres pratiques.
20 déc. 2006 à 15:58
Dabord, bravo pour le travail effecuter, par contre lors qu'une photo à des infos (IPTC), impossible de les afficher,il y a une exception non géer. voici le message : "La résolution de surcharge a échoué, car aucun 'GetDataFormatted' accessible n'accepte ce nombre d'arguments." à la ligne 104.
Merci d'avance pour la modif.
19 déc. 2006 à 19:27
merci...ca devrait être corrigé...
ShareVB
15 déc. 2006 à 17:20
Félicitations et merci pour ce travail superbe. Ai un problème, en frmIPTC.vb, fillInfoIPTC, la ligne str_Renamed = m_IPTC.Tags.Item(x).GetDataFormatted(ten, tfr) il donne une erreur "Overload resolution failed because no accessible 'GetDataFormatted 'accepts this number of arguments." GetDataFormatted paraît ne pas exister.
Merci et pardon pour ecrire le française tres mal...
6 août 2006 à 12:21
je précise quand même que les commentaires d'entêtes de méthodes (et autres) sont un peu foireux parce qu'il vienne de la première version VB6 procédural qui je j'ai modifiée en objet puis en VB.Net...bref, les paramètres ont un peu changé...
pour s'y retrouver :
-> il y a les cinq classes de fichiers gérés CBMP, CGIF, CJPEG, CPNG et CTIFF
-> toutes les classes (à peu près) dérivent de CEndianRW (classe de lecture écriture de données Little Endian ou Big Endian
-> pour PNG, on a les classes CzTXt, CtEXt, CiTXt qui dérivent de CTextChunk (infos textuelles) et CpHYS, CtIME et CIHDR (qui représente d'autres infos intéressantes). Toutes ces classes dérivent de CChunk parce que ceux sont des chunks PNG...
-> pour GIF, il y a CGIFExtension qui représente une extension dans un fichier GIF
-> pour TIFF et JPEG, il contiennent un membre CExif et CIPTC. Pour CJPEG, il contient un CJFIF et un CJPEGComment et une liste de CMarker...
-> pour EXIF, les classes CExifJPEG et CExifTIFF représentent les données EXIF suivant le type de fichier (les entêtes sont différentes). Elles dérivent de CExif (qui contient toutes les méthodes de manipulation de EXIF sous sa forme Générale.
--> CExif contient un à plusieurs CIFD (avec différents noms) qui contiennent des dossiers CExifDirEnt qui contiennent les tags et les informations EXIF.
--> La classe CMakerNote hérite de CIFD car en général il s'agit d'une forme particulière d'IFD contenu dans les informations d'un tag
-> Enfin, la classe CImage est une classe générale qui instancie le bon type de fichier et renvoie la classe en question (CJPEG...) dans ImageProps...
Je sais que ca ne doit pas être beaucoup plus clair...mais bon...
Références : www.exif.org et www.iptc.org...
ShareVB
5 août 2006 à 04:43
C'est exactement ce que je cherchais !
Par contre c'est pas super évident de se retrouver la dedan
9/10 :) et encore merci
PY
4 août 2006 à 22:38
Merci pour les commentaires sans euh je m'y serais pas retrouver je pense.
Excellente source +1