HEIC (High-Efficiency Image Container) adalah wadah yang dapat berisi gambar HEIF Format Gambar Efisiensi Tinggi. XMP adalah standar metadata berbasis XML, yang dapat menyimpan properti metadata sebagai pasangan nama/nilai. Namun, EXIF (Exchangeable Image File Format) adalah standar dan menentukan cara menyimpan properti metadata dalam format gambar dan audio yang paling umum. Pada artikel ini, kita akan mempelajari cara mengekstrak, memperbarui, dan menghapus metadata XMP dan EXIP dari gambar HEIF/HEIC menggunakan C# dalam aplikasi .NET.

Topik-topik berikut dibahas di bawah ini:

.NET API untuk Metadata XMP dan EXIF

GroupDocs.Metadata menyediakan .NET API untuk mengotomatiskan manajemen metadata dalam aplikasi .NET. API memungkinkan untuk membaca, memperbarui, menambah, membersihkan/menghapus, dan melintasi metadata untuk banyak format file. Berbagai standar metadata seperti EXIF, IPTC, dan XMP didukung oleh API. Anda juga dapat mengunjungi dokumentasi untuk daftar lengkap format file yang didukung untuk manipulasi metadata.

Anda dapat mengunduh penginstal DLL atau MSI dari bagian unduhan atau menginstal API di aplikasi .NET Anda melalui NuGet.

PM> Install-Package GroupDocs.Metadata

Baca data EXIF Gambar HEIC / HEIF di C#

Berikut adalah langkah-langkah untuk membaca dan mengekstrak data EXIF gambar HEIC dan HEIF.

  • Muat gambar HEIF atau HEIC menggunakan kelas Metadata.
  • Dapatkan paket root.
  • Ambil paket EXIF dari paket root.
  • Lintasi properti data EXIF.
  • Selanjutnya, Anda bisa mendapatkan informasi IFD (Image File Directory) dan GPS dari paket EXIF.

Kode berikut menunjukkan cara mendapatkan data EXIF, IFD, dan informasi metadata GPS dari gambar HEIC menggunakan C#.

// Baca EXIF, EXIF IFD, Paket EXIF GPS dari gambar HEIF / HEIC di 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);
        }
    }
}

Baca data XMP Gambar HEIC / HEIF di C#

Langkah-langkah berikut membaca metadata XMP dari gambar HEIC atau HEIF.

  • Muat gambar HEIF atau HEIC menggunakan kelas Metadata.
  • Dapatkan paket root menggunakan metode getRootPackage.
  • Dari paket root, Anda bisa mendapatkan informasi dasar XMP.
  • Selanjutnya, Anda bisa mendapatkan informasi DCMI Dublin Core.
  • Selain itu, Anda bisa mendapatkan informasi Photoshop menggunakan metode getPhotoshop.

Kode sumber berikut menunjukkan cara mendapatkan informasi dasar XMP, DCMI, dan Photoshop di C#.

// Ekstrak data XMP Basic, DublinCore, dan Photoshop dari gambar HEIC dan HEIF dalam 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);
            // ... 
        }
        // ...
    }
}

Demikian pula, ada banyak metode penyetel untuk menyetel atau memperbarui properti XMP yang berbeda. Anda bahkan dapat menyediakan key-value pair Anda sendiri untuk menyetel properti paket XMP khusus.

Hapus Metadata EXIF dan XMP dari Gambar HEIC/HEIF di C#

Anda cukup menyetel paket EXIF atau paket XMP masing-masing ke null untuk menghapus semua properti metadata.

Kode berikut menghapus data EXIF dari gambar HEIC di 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");
	}
}

Kode berikut menghapus data XMP gambar HEIC di 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");
	}
}

Dapatkan Lisensi API Gratis

Anda bisa mendapatkan lisensi sementara gratis untuk menggunakan API tanpa batasan evaluasi.

Kesimpulan

Singkatnya, kami telah belajar mengekstrak, memperbarui, menghapus metadata EXIF dan XMP dari gambar HEIF/HEIC di C#. Selanjutnya, Anda telah melihat cara mendapatkan informasi IFD dan GPS dari gambar-gambar ini. Sekarang Anda dapat dengan mudah mendapatkan informasi ini dan juga mulai membangun aplikasi Anda sendiri seperti GroupDocs.Metadata App Product Family untuk mengotomatisasi informasi metadata.

Untuk informasi lebih lanjut, opsi, dan contoh, Anda dapat mengunjungi dokumentasi dan repositori GitHub. Untuk pertanyaan lebih lanjut, hubungi kami di support forum.

Lihat juga