Dans le post précédent, nous avons expliqué comment traiter les données EXIF des images en Java. Ici, aujourd’hui, nous allons chercher à obtenir la même chose mais en C#. Si vous n’avez pas consulté le dernier article, mais que vous souhaitez **extraire, mettre à jour, ajouter ou supprimer des données EXIF de vos images par programmation en C # **, cet article vous guidera à travers cela. Nous couvrirons les manières suivantes de manipuler les données EXIF en C# :

Bibliothèque C# de gestion des métadonnées

API de métadonnées .NET par GroupDocs

GroupDocs.Metadata for .NET est l’API .NET de gestion des métadonnées. Il a une longue liste de fonctionnalités pour une grande variété de formats de fichiers pris en charge. Il a la capacité non seulement d’extraire les métadonnées des images, mais également d’ajouter, de modifier, de mettre à jour et de supprimer les métadonnées des images et des documents avec diverses options.

Dans cet article, nous utiliserons cette API, alors assurez-vous de télécharger ses binaires ou d’installer l’API à partir de NuGet.

Lire les données EXIF à partir d’images en C#

Vous pouvez facilement lire les propriétés des données EXIF en suivant les étapes mentionnées. A commencer par l’extraction des données EXIF de cette image, Statue de la Liberté haute de 93m. Ici, nous utiliserons un fichier JPG comme exemple d’image, cependant, nous pouvons utiliser n’importe quel fichier, qu’il s’agisse d’un PNG, WebP, BMP, GIF, TIFF ou de tout autre parmi les formats de fichiers pris en charge mentionnés à la fin de Cet article.

Image Liberty JPG pour les données EXIF
  • Chargez le fichier source de l’image contenant les informations de données EXIF à l’aide du constructeur de classe Metadata.
  • Obtenez son paquet racine en appelant la méthode GetRootPackage().
  • À partir du package racine, obtenez son ExifPackage à partir de sa propriété ExifPackage.
  • Une fois que vous avez le package EXIF, vous pouvez maintenant accéder aux propriétés EXIF de l’image ; comme Make, Model, Width, Length, DateTime, Copyright, Software, etc. comme indiqué ci-dessous dans l’exemple de code C#.
// Extract EXIF Data Package Information from image in C#
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        Console.WriteLine(root.ExifPackage.Make);
        Console.WriteLine(root.ExifPackage.Model);
        Console.WriteLine(root.ExifPackage.ImageWidth);
        Console.WriteLine(root.ExifPackage.ImageLength);
        Console.WriteLine(root.ExifPackage.DateTime);
     }
}

Le code ci-dessus affichera les informations EXIF disponibles suivantes de l’image JPG fournie.

Make : NIKON CORPORATION
Model : NIKON D7200 
Width : 640
Length : 384
DateTime : 2018:07:06 19:31:05

Lecture des informations EXIF IFD et GPS de l’image

Les données EXIF incluent également les informations Exif IFD (Répertoire de fichiers d’images) et GPS (Global Positioning System). Maintenant, pour les informations sur les packages IFD et GPS, il vous suffit d’accéder aux propriétés respectives du ** package EXIF **, c’est-à-dire ExifIfdPackage ou GpsPackage. À partir de ces packages, vous pouvez extraire beaucoup plus d’informations que celles mentionnées ci-dessous :

  • Numéro de série de l’appareil
  • Nom du propriétaire de la caméra
  • Modèle CFA
  • La vitesse
  • Sens de l’image
  • Timbre dateur
  • Informations sur la région
  • Altitude
  • Latitude
  • Longueur
  • etc.

Le code mentionné ci-dessous peut être ajouté dans votre méthode ci-dessus pour afficher les données EXIF avec les informations IFD et GPS.

// Display EXIF IFD Package Properties like Serial Number and Camera Owner.
Console.WriteLine(root.ExifPackage.ExifIfdPackage.BodySerialNumber);
Console.WriteLine(root.ExifPackage.ExifIfdPackage.CameraOwnerName);
Console.WriteLine(root.ExifPackage.ExifIfdPackage.UserComment);
// Display EXIF GPS Information like Latitude, Longitude, etc.
Console.WriteLine(root.ExifPackage.GpsPackage.Altitude);
Console.WriteLine(root.ExifPackage.GpsPackage.LatitudeRef);
Console.WriteLine(root.ExifPackage.GpsPackage.LongitudeRef);

Lire toutes les balises EXIF des images en C#

Vous pouvez extraire toutes les propriétés EXIF de n’importe quelle image, vous pouvez le faire d’une manière presque similaire à celle ci-dessus :

  • Chargez l’image avec le constructeur Metadata.
  • Obtenez le paquet racine en appelant la méthode GetRootPackage().
  • Obtenez le package EXIF à partir de la propriété ExifPackage du package racine.
  • Itérez le package EXIF et obtenez les paires nom-valeur souhaitées.
  • De même, obtenez les packages IFD et GPS pour afficher ses clés et ses valeurs.
// Extract all EXIF Metadata from the image
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        const string pattern = "{0} = {1}";
        // Read all EXIF Package Tags and values.
        foreach (TiffTag tag in root.ExifPackage.ToList()) {
            Console.WriteLine(pattern, tag.Name, tag.Value);
        }
        // Read all EXIF IFD Package Tags and values.
        foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList()) {
            Console.WriteLine(pattern, tag.Name, tag.Value);
        }
         // Read all EXIF GPS Package Tags and values.
        foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList()) {
            Console.WriteLine(pattern, tag.Name, tag.Value);
        }
    }
}

Mettre à jour les propriétés EXIF en C#

Vous pouvez facilement modifier les données EXIF existantes de n’importe quelle image. Voici les étapes que vous pouvez suivre :

Mettre à jour le package EXIF

  • Obtenez le paquet racine en appelant la méthode GetRootPackage().
  • Définissez les propriétés ExifPackage en attribuant les nouvelles valeurs aux propriétés correspondantes, comme attribuer une nouvelle valeur à :
    • root.ExifPackage.Copyright - pour définir les informations de copyright mises à jour.
  • De même, vous pouvez définir les valeurs de l’artiste, de la marque, du modèle, du logiciel, de la largeur et de la hauteur de l’image, de la date et de l’heure, etc.

Mettre à jour le package EXIF IFD

Semblable aux propriétés de réglage du package EXIF, nous pouvons mettre à jour les propriétés des packages EXIF IFD et GPS.

  • Attribuez une valeur à root.ExifPackage.ExifIfdPackage.CameraOwnerName pour définir le propriétaire de la caméra.

Vous pouvez visiter les classes ExifIfdPackage ou ExifGpsPackage pour avoir une idée de ce que vous pouvez personnaliser pour vos images.

// Update or change new values in EXIF Data (EXIF Package & EXIF IFD Package).
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null)
    {
        // Set the EXIF package if it is missing
        if (root.ExifPackage == null) {
            root.ExifPackage = new ExifPackage();
        }
       // Setting the desired values in EXIF Package and EXIF IFD Package.
        root.ExifPackage.Copyright = "Copyright (C) 2011-2020 GroupDocs. All Rights Reserved.";
        root.ExifPackage.ImageDescription = "Statue of Liberty for EXIF Data";
        root.ExifPackage.Software = "GroupDocs.Metadata for .NET"; 
        root.ExifPackage.ExifIfdPackage.BodySerialNumber = "GD-2020";
        root.ExifPackage.ExifIfdPackage.CameraOwnerName = "GroupDocs";
        root.ExifPackage.ExifIfdPackage.UserComment = "Nice image captured in 2018";
        metadata.Save("statue-of-liberty-updated.jpg");
    }
}

Supprimer les métadonnées EXIF des images en C

Si vous souhaitez supprimer le package EXIF de n’importe quel fichier, définissez simplement sa propriété ExifPackage sur ** null **.

// Removing the EXIF data from an image.
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null)
    {
        root.ExifPackage = null;
        metadata.Save("statue-of-liberty-no-exif.jpg");
    }
}

Images et autres formats pris en charge

Ce sont les formats de fichiers actuellement pris en charge par GroupDocs.Metadata pour les informations de données EXIF des images, audios et vidéos. Vous pouvez toujours visiter la documentation pour les informations mises à jour.

Type de document Formats de fichier
Images BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF
Audio & Vidéo MP3, WAV, AVI, MOV/QT, FLV, ASF, DICOM

En savoir plus sur GroupDocs.Metadata

Parlons plus @ Forum d’assistance gratuit.

Article associé