HEIC (High-Efficiency Image Container) to kontener, który może zawierać obrazy HEIF w formacie obrazu o wysokiej wydajności. XMP to oparty na XML standard metadanych, który może przechowywać właściwości metadanych jako pary nazwa/wartość. Jednak EXIF (Exchangeable Image File Format) jest standardem i określa sposób przechowywania właściwości metadanych w najpopularniejszych formatach obrazów i audio. W tym artykule dowiemy się, jak wyodrębniać, aktualizować i usuwać metadane XMP i EXIP obrazów HEIF/HEIC przy użyciu języka C# w aplikacjach .NET.

Poniżej omówiono następujące tematy:

.NET API dla metadanych XMP i EXIF

GroupDocs.Metadata zapewnia interfejs API .NET do automatyzacji zarządzania metadanymi w aplikacjach .NET. Interfejs API umożliwia odczyt, aktualizację, dodawanie, czyszczenie/usuwanie i przeglądanie metadanych dla wielu formatów plików. Interfejs API obsługuje różne standardy metadanych, takie jak EXIF, IPTC i XMP. Pełną listę [obsługiwanych formatów plików do manipulacji metadanymi] można również znaleźć w dokumentacji 5.

Możesz pobrać pliki DLL lub instalator MSI z sekcji pobierania lub zainstalować interfejs API w swojej aplikacji .NET za pośrednictwem NuGet.

PM> Install-Package GroupDocs.Metadata

Czytaj dane EXIF obrazów HEIC / HEIF w C#

Poniżej przedstawiono kroki, aby odczytać i wyodrębnić dane EXIF z obrazów HEIC i HEIF.

  • Załaduj obraz HEIF lub HEIC przy użyciu klasy Metadata.
  • Pobierz pakiet główny.
  • Pobierz pakiet EXIF z pakietu głównego.
  • Przejrzyj właściwości danych EXIF.
  • Ponadto można uzyskać informacje IFD (katalog plików obrazów) i GPS z pakietu EXIF.

Poniższy kod pokazuje, jak uzyskać dane EXIF, informacje o metadanych IFD i GPS obrazu HEIC przy użyciu języka C#.

// Czytaj EXIF, EXIF IFD, EXIF GPS Pakiet obrazów HEIF / HEIC w C#
using (Metadata metadata = new Metadata(@"image.heic"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        const string pattern = "{0} = {1}";

        foreach (TiffTag tag in root.ExifPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }
    }
}

Czytaj dane XMP obrazów HEIC / HEIF w C#

Poniższe kroki odczytują metadane XMP obrazów HEIC lub HEIF.

  • Załaduj obraz HEIF lub HEIC przy użyciu klasy Metadata.
  • Pobierz pakiet główny za pomocą metody getRootPackage.
  • Z pakietu głównego można uzyskać podstawowe informacje XMP.
  • Ponadto możesz uzyskać informacje DCMI Dublin Core.
  • Dodatkowo możesz uzyskać informacje o programie Photoshop za pomocą metody getPhotoshop.

Poniższy kod źródłowy pokazuje, jak uzyskać podstawowe informacje XMP, DCMI i Photoshop w języku C#.

// Wyodrębnij dane XMP Basic, DublinCore i Photoshop z obrazów HEIC i HEIF w C#
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        if (root.XmpPackage.Schemes.XmpBasic != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
            // ...
        }
        if (root.XmpPackage.Schemes.DublinCore != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
            // ...
        }
        if (root.XmpPackage.Schemes.Photoshop != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
            // ... 
        }
        // ...
    }
}

Podobnie istnieje wiele metod ustawiających do ustawiania lub aktualizowania różnych właściwości XMP. Możesz nawet podać własną parę klucz-wartość, aby ustawić niestandardową właściwość pakietu XMP.

Usuń metadane EXIF i XMP obrazów HEIC / HEIF w C#

Możesz po prostu ustawić odpowiedni pakiet EXIF lub pakiet XMP na wartość null, aby usunąć wszystkie właściwości metadanych.

Poniższy kod usuwa dane EXIF obrazów HEIC w języku C#.

using (Metadata metadata = new Metadata("image.heic"))
{
	IExif root = metadata.GetRootPackage() as IExif;
	if (root != null)
	{
		root.ExifPackage = null;
		metadata.Save("no-exif-image.heic");
	}
}

Poniższy kod usuwa dane XMP obrazów HEIC w języku C#.

using (Metadata metadata = new Metadata("image.heic"))
{
	IXmp root = metadata.GetRootPackage() as IXmp;
	if (root != null)
	{
		root.XmpPackage = null;
		metadata.Save("no-xmp-image.heic");
	}
}

Uzyskaj bezpłatną licencję API

Możesz uzyskać bezpłatną tymczasową licencję, aby korzystać z API bez ograniczeń ewaluacyjnych.

Wniosek

Podsumowując, nauczyliśmy się wydobywać, aktualizować, usuwać metadane EXIF i XMP z obrazów HEIF/HEIC w C#. Ponadto widziałeś, jak uzyskać informacje IFD i GPS z tych obrazów. Teraz możesz łatwo uzyskać te informacje, a także rozpocząć tworzenie własnych aplikacji, takich jak GroupDocs.Metadata App Product Family, aby zautomatyzować informacje o metadanych.

Więcej informacji, opcji i przykładów można znaleźć w repozytorium documentation i GitHub. W przypadku dalszych pytań skontaktuj się z nami za pośrednictwem pomocy technicznej forum.

Zobacz też