lundi 18 mars 2013

[C#] - Données EXIF

Là j'ai un peu plus galéré. J'ai du pas mal chercher sur le net pour trouver comment récupérer les données exif.

J'ai trouvé quelques librairie mais la complexité était trop grande, que j'ai décidé de coder moi même (en m'aidant d'exemples du site msdn) la fonction de récupération.

Code

public void getImageNameFromExif(string imagePath)
        {

            //On charge la photo
            Bitmap photo = new Bitmap(imagePath);

            //On récupère les metadata
            PropertyItem[] pi = photo.PropertyItems;
            
            //On récupère la date (voir exif.org pour le code/tag Original DateTime)
            PropertyItem dateItem = photo.GetPropertyItem(36867);

            //On récupère la valeur de la propriété
            Encoding ascii=Encoding.ASCII;
            string dateString = ascii.GetString(dateItem.Value, 0, dateItem.Len - 1);
            
            //On convertit la chaine de caractère récupérée en DateTime
            string format = "yyyy:MM:dd hh:mm:ss";
            DateTime date = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);

            //On génère le nom du fichier. 
            string format_out = "{0:yyyy/MM/dd/yyyyMMdd_hhmmss}";
            String outFile = String.Format(format_out, date);
            String targetPath = this.basePath + "/"  + outFile + ".jpg";

            //On affiche pour debug
            Console.WriteLine(targetPath);
           
        }

Là non plus, ce n'est pas trop compliqué mais sans aide, il serait impossible de trouver seul certaines 'astuces'

Aucun commentaire:

Enregistrer un commentaire