Im vorherigen Beitrag haben wir besprochen, wie man mit EXIF-Daten von Bildern in Java umgeht. Hier werden wir uns heute damit befassen, dasselbe zu erreichen, aber in C#. Wenn Sie den letzten Beitrag nicht gelesen haben, aber EXIF-Daten Ihrer Bilder programmgesteuert in C# extrahieren, aktualisieren, hinzufügen oder entfernen möchten, führt Sie dieser Artikel durch dies. Wir werden die folgenden Möglichkeiten zur Bearbeitung von EXIF-Daten in C# behandeln:

C#-Bibliothek für die Metadatenverwaltung

Metadaten .NET API von GroupDocs

GroupDocs.Metadata for .NET ist eine .NET-API für die Metadatenverwaltung. Es hat eine lange Liste von Features für eine Vielzahl von unterstützten Dateiformaten. Es kann nicht nur Metadaten aus Bildern extrahieren, sondern mit verschiedenen Optionen auch Metadaten zu Bildern und Dokumenten hinzufügen, bearbeiten, aktualisieren und entfernen.

In diesem Artikel werden wir diese API verwenden, stellen Sie also bitte sicher, dass Sie ihre Binärdateien herunterladen oder die API von NuGet installieren.

Lesen Sie EXIF-Daten von Bildern in C#

Sie können die EXIF-Dateneigenschaften einfach lesen, indem Sie die genannten Schritte ausführen. Beginnend mit der Extraktion von EXIF-Daten aus diesem Bild, der 93 m hohen Freiheitsstatue. Hier verwenden wir eine JPG-Datei als Beispielbild, aber wir können jede Datei verwenden, egal ob es sich um eine PNG-, WebP-, BMP-, GIF-, TIFF- oder eine andere Datei aus den unterstützten Dateiformaten handelt, die am Ende von erwähnt werden Dieser Artikel.

Liberty-JPG-Bild für EXIF-Daten
  • Laden Sie die Bildquelldatei mit EXIF-Dateninformationen mit dem Klassenkonstruktor Metadaten.
  • Rufen Sie sein Root-Paket ab, indem Sie die Methode GetRootPackage() aufrufen.
  • Holen Sie sich aus dem Root-Paket sein ExifPackage aus seiner ExifPackage-Eigenschaft.
  • Sobald Sie das EXIF-Paket haben, können Sie jetzt auf die EXIF-Eigenschaften des Bildes zugreifen; wie Make, Model, Width, Length, DateTime, Copyright, Software usw., wie unten im C#-Codebeispiel gezeigt.
// 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);
     }
}

Der obige Code zeigt die folgenden verfügbaren EXIF-Informationen des bereitgestellten JPG-Bildes an.

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

Lesen von EXIF-IFD- und GPS-Informationen des Bildes

EXIF-Daten enthalten auch die Exif-Informationen IFD (Image File Directory) und GPS (Global Positioning System). Für IFD- und GPS-Paketinformationen müssen Sie nun nur noch auf die entsprechenden Eigenschaften des EXIF-Pakets zugreifen, dh ExifIfdPackage oder GpsPackage. Aus diesen Paketen können Sie viel mehr Informationen extrahieren als unten erwähnt:

  • Seriennummer des Geräts
  • Name des Kamerabesitzers
  • CFA-Muster
  • Geschwindigkeit
  • Bildrichtung
  • Datumsstempel
  • Gebietsinformationen
  • Höhe
  • Breite
  • Längengrad
  • etc.

Der unten erwähnte Code kann in Ihrer obigen Methode hinzugefügt werden, um EXIF-Daten zusammen mit IFD- und GPS-Informationen anzuzeigen.

// 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);

Alle EXIF-Tags von Bildern in C# lesen

Sie können alle EXIF-Eigenschaften eines beliebigen Bildes extrahieren, Sie können dies auf fast ähnliche Weise wie oben tun:

  • Laden Sie das Bild mit dem Konstruktor Metadata.
  • Holen Sie sich das Root-Paket, indem Sie die Methode GetRootPackage() aufrufen.
  • Holen Sie sich das EXIF-Paket aus der ExifPackage-Eigenschaft des Root-Pakets.
  • Iterieren Sie das EXIF-Paket und erhalten Sie die gewünschten Name-Wert-Paare.
  • Holen Sie sich auf ähnliche Weise die IFD- und GPS-Pakete, um ihre Schlüssel und Werte anzuzeigen.
// 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);
        }
    }
}

EXIF-Eigenschaften in C# aktualisieren

Sie können die vorhandenen EXIF-Daten jedes Bildes einfach ändern. Im Folgenden sind die Schritte aufgeführt, die Sie befolgen können:

EXIF-Paket aktualisieren

  • Holen Sie sich das Root-Paket, indem Sie die Methode GetRootPackage() aufrufen.
  • Legen Sie die ExifPackage-Eigenschaften fest, indem Sie die neuen Werte den entsprechenden Eigenschaften zuweisen, z. B. neuen Wert zuweisen an:
    • root.ExifPackage.Copyright - um aktualisierte Urheberrechtsinformationen festzulegen.
  • Ebenso können Sie die Werte für Künstler, Marke, Modell, Software, Bildbreite und -höhe, DateTime usw. festlegen.

EXIF-IFD-Paket aktualisieren

Ähnlich wie bei den Einstellungseigenschaften des EXIF-Pakets können wir die Eigenschaften von EXIF-IFD- und GPS-Paketen aktualisieren.

  • Weisen Sie root.ExifPackage.ExifIfdPackage.CameraOwnerName einen Wert zu, um den Kamerabesitzer festzulegen.

Sie können die Klassen ExifIfdPackage oder ExifGpsPackage besuchen, um eine Vorstellung davon zu bekommen, wie viel Sie für Ihre Bilder anpassen können.

// 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");
    }
}

Entfernen Sie EXIF-Metadaten von Bildern in C#

Wenn Sie das EXIF-Paket aus einer beliebigen Datei entfernen möchten, setzen Sie einfach seine ExifPackage-Eigenschaft auf 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");
    }
}

Unterstützte Bilder und andere Formate

Dies sind die derzeit von GroupDocs.Metadata unterstützten Dateiformate für EXIF-Dateninformationen von Bildern, Audios und Videos. Die aktualisierten Informationen finden Sie jederzeit in der Dokumentation.

Erfahren Sie mehr über GroupDocs.Metadata

  • Dokumentation (.NET | [Java][26]
  • [Quellcodebeispiele][27]
  • [API-Referenz][28]
  • GroupDocs.Metadata – [Die Metadaten-Management-Lösung][29]

Reden wir weiter @ [Kostenloses Support-Forum.][30]

Verwandter Artikel

  • [EXIF-Daten von Bildern in Java verwalten][31]

[26]: https://docs.groupdocs.com/display/metadatajava/Getting+Started) [27]: https://github.com/groupdocs-metadata/ [28]: https://apireference.groupdocs.com/metadata [29]: https://products.groupdocs.com/metadata [30]: https://forum.groupdocs.com/c/metadata [31]: https://blog.groupdocs.com/de/2020/05/12/handle-exif-data-of-jpg-png-webp-images-in-java/