In de vorige post bespraken we hoe om te gaan met EXIF-gegevens van afbeeldingen in Java. Hier zullen we vandaag kijken hoe we hetzelfde kunnen bereiken, maar dan in C#. Als je het laatste bericht niet hebt bezocht, maar je wilt EXIF-gegevens van je afbeeldingen programmatisch extraheren, bijwerken, toevoegen of verwijderen in C#, dan zal dit artikel je hier doorheen leiden. We behandelen de volgende manieren om te manipuleren met EXIF-gegevens in C#:

Metadatabeheer C#-bibliotheek

Metadata .NET API door GroupDocs

GroupDocs.Metadata for .NET is de .NET API voor metadatabeheer. Het heeft een lange lijst met functies voor een breed scala aan ondersteunde bestandsindelingen. Het heeft niet alleen de mogelijkheid om metadata uit afbeeldingen te extraheren, maar het kan ook metadata toevoegen, bewerken, bijwerken en verwijderen uit de afbeeldingen en documenten met verschillende opties.

In dit artikel gebruiken we deze API, dus zorg ervoor dat je de binaire bestanden downloadt of installeer de API van NuGet.

Lees EXIF-gegevens van afbeeldingen in C#

U kunt de EXIF-gegevenseigenschappen eenvoudig lezen door de genoemde stappen te volgen. Te beginnen met de extractie van EXIF-gegevens van deze foto, het 93 meter hoge Vrijheidsbeeld. Hier gebruiken we een JPG-bestand als voorbeeldafbeelding, maar we kunnen elk bestand gebruiken, of het nu een PNG, WebP, BMP, GIF, TIFF of een ander bestand is uit de ondersteunde bestandsindelingen die aan het einde van Dit artikel.

Liberty JPG-afbeelding voor EXIF-gegevens
  • Laad het afbeeldingsbronbestand met EXIF-gegevensinformatie met behulp van de klasseconstructor Metadata.
  • Haal het rootpakket op door de methode GetRootPackage() aan te roepen.
  • Haal uit het hoofdpakket zijn ExifPackage op uit zijn ExifPackage-eigenschap.
  • Zodra u het EXIF-pakket hebt, hebt u nu toegang tot de EXIF-eigenschappen van de afbeelding; zoals Make, Model, Width, Length, DateTime, Copyright, Software, enz. zoals hieronder weergegeven in C#-codevoorbeeld.
// 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);
     }
}

De bovenstaande code geeft de volgende beschikbare EXIF-informatie weer van de geleverde JPG-afbeelding.

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

EXIF IFD- en GPS-informatie van afbeelding lezen

EXIF-gegevens omvatten ook de Exif IFD-informatie (Image File Directory) en GPS-informatie (Global Positioning System). Nu hoeft u voor IFD- en GPS-pakketinformatie alleen toegang te krijgen tot de respectieve eigenschappen van het EXIF-pakket, dwz ExifIfdPackage of GpsPackage. Uit deze pakketten kun je veel meer informatie halen dan hieronder vermeld:

  • Serienummer van het apparaat
  • Naam camera-eigenaar
  • CFA-patroon
  • Snelheid
  • Beeld richting
  • Datumstempel
  • Gebiedsinformatie
  • Hoogte
  • Breedtegraad
  • Lengtegraad
  • enz.

Onderstaande code kan in uw bovenstaande methode worden toegevoegd om EXIF-gegevens samen met IFD- en GPS-informatie weer te geven.

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

Lees alle EXIF-tags van afbeeldingen in C#

Je kunt alle EXIF-eigenschappen van elke afbeelding extraheren, je kunt het op bijna dezelfde manier doen als hierboven:

  • Laad de afbeelding met de constructor Metadata.
  • Haal het rootpakket op door de methode GetRootPackage() aan te roepen.
  • Haal het EXIF-pakket op uit de ExifPackage-eigenschap van het rootpakket.
  • Herhaal het EXIF-pakket en verkrijg de gewenste naam-waardeparen.
  • Haal op dezelfde manier de IFD- en GPS-pakketten op om de sleutels en waarden weer te geven.
// 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);
        }
    }
}

Update EXIF-eigenschappen in C#

U kunt de bestaande EXIF-gegevens van elke afbeelding eenvoudig wijzigen. Hieronder volgen de stappen die u kunt volgen:

Update EXIF-pakket

  • Haal het rootpakket op door de methode GetRootPackage() aan te roepen.
  • Stel de ExifPackage-eigenschappen in door de nieuwe waarden toe te wijzen aan overeenkomstige eigenschappen, zoals nieuwe waarde toewijzen aan:
    • root.ExifPackage.Copyright - om bijgewerkte copyrightinformatie in te stellen.
  • Op dezelfde manier kunt u de waarden instellen voor de artiest, het merk, het model, de software, de breedte en hoogte van de afbeelding, DateTime, enz.

Update EXIF IFD-pakket

Vergelijkbaar met de instellingseigenschappen van het EXIF-pakket, kunnen we de eigenschappen van EXIF IFD- en GPS-pakketten bijwerken.

  • Wijs een waarde toe aan root.ExifPackage.ExifIfdPackage.CameraOwnerName om de camera-eigenaar in te stellen.

U kunt de klassen ExifIfdPackage of ExifGpsPackage bezoeken om een idee te krijgen hoeveel u kunt aanpassen voor uw afbeeldingen.

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

Verwijder EXIF-metadata van afbeeldingen in C#

Als u het EXIF-pakket uit een bestand wilt verwijderen, stelt u de eigenschap ExifPackage in op 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");
    }
}

Ondersteunde afbeeldingen en andere indelingen

Dit zijn de momenteel ondersteunde bestandsindelingen door GroupDocs.Metadata voor EXIF-gegevensinformatie van afbeeldingen, audio en video’s. U kunt altijd de documentatie bezoeken voor de bijgewerkte informatie.

Documenttype Bestandsformaten
Afbeeldingen BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF
Audio & Video MP3, WAV, AVI, MOV/QT, FLV, ASF, DICOM

Meer informatie over GroupDocs.Metadata

Laten we meer praten @ Gratis ondersteuningsforum.

Gerelateerd artikel