(.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 230 fois - Téléchargée 3 035 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

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)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
33
Messages postés
2
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
7 mai 2011

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.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
33
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);
Messages postés
4
Date d'inscription
jeudi 15 décembre 2005
Statut
Membre
Dernière intervention
20 décembre 2006

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.