(.net) lire et écrire les metadonnees exif, iptc, png, gif (format tiff, jpeg, png, gif, bmp) en vb.net

Soyez le premier à donner votre avis sur cette source.

Vue 24 626 fois - Téléchargée 3 134 fois

Description

Ce code permet de lire et d'écrire les données EXIF, IPTC dans les TIFF et JPEG et le commentaire JPEG. Il permet aussi de lire et modifier les données textuelles des PNG et GIF.
Ce code est entièrement orienté objet...largement mieux que la source VB6 équivalente...

Ce projet a été testé avec une trentaine de fichiers différents.

Pour EXIF :
Ce code permet de lire et de modifier les propriétés EXIF stockées dans les images JPEG et TIFF comme dans l'onglet "Résumé" des propriétés des fichiers et certains tags EXIF (ImageDescrition, Auteur, et tous les tags ascii...).

Ce projet prend en charge les makernotes qui ont la forme d'IFD. Il se peut toutefois que les valeurs lues soient incorrectes car la plus part des logiciels qui modifient les images (Windows en premier) ne mettent pas à jour les offsets dans l'IFD ce qui les rend invalides. Dans ce cas, lors de l'enregistrement, les données existantes ne sont pas modifiées. En consèquence, seules les photos provenants directement et sans modification (ou d'un logiciel qui prend en charge les makernotes) peuvent être lues correctement pour extraire les makernotes. Les makernotes sont non documentées par les fabricants : tous les tags ne sont donc pas connus avec assurance...

Pour IPTC :
Ce code permet de lire et d'écrire les informations contenues dans le marker APP13 (FFED) définies par Adobe Photoshop et l'IPTC (IIM) pour un fichier JPEG et dans le tag EXIF IPTC.NAA pour les TIFF...On trouve des infos comme le nom de l'objet, la catégorie, des mots-clés, des dates, le programme qui a écrit les données IPTC, les auteurs, le pays, le copyright...

Pour PNG : il assure la lecture et l'écriture des chunks de commentaires même compressés...

Pour GIF : il assure la lecture et l'écriture du commentaire

Ce code est un rassemblement de deux autres de mes sources (EXIF et IPTC) auquel j'ai ajouté PNG et GIF.

Pour utiliser la lecture/écriture PNG, il faut que vous téléchargiez la dll Zlib (http://www.winimage.com/zLibDll/) et la mettre dans system32 renommée en zlib.dll...

ATTENTION : faites toujours une copie de vos fichiers au cas où un bug les rendrait illisible. Je ne serais être tenu responsable d'une perte de donnée...une lecture est toujours sûre, une écriture jamais...

Source / Exemple :


'dans le zip

Conclusion :


Développé avec VB2005 Express...et framework .Net 2.0...

Pour utiliser la lecture/écriture PNG, il faut que vous téléchargiez la dll Zlib (http://www.winimage.com/zLibDll/) et la mettre dans system32 renommée en zlib.dll...cela est nécessaire vu la piètre qualité de la classe System.IO.Compression.DeflateStream...

ATTENTION : faites toujours une copie de vos fichiers au cas où un bug les rendrait illisible. Je ne serais être tenu responsable d'une perte de donnée...une lecture est toujours sûre, une écriture jamais...

N'hésitez pas à commenter et à noter...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
JojoBernard
20 oct. 2015 à 20:55
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és 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
8 mai 2011 à 14:48
EmmelineDUEZ Messages postés 2 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 7 mai 2011
7 mai 2011 à 16:46
Bonjour,

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.
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
21 févr. 2009 à 23:09
Salut,

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);
foxvivi Messages postés 4 Date d'inscription jeudi 15 décembre 2005 Statut Membre Dernière intervention 20 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.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.