HEIC (Yüksek Verimli Görüntü Kabı), Yüksek Verimli Görüntü Biçimli HEIF görüntüleri içerebilen bir kaptır. XMP, meta veri özelliklerini ad/değer çiftleri olarak depolayabilen, XML tabanlı bir meta veri standardıdır. Bununla birlikte, EXIF (Exchangeable Image File Format) standarttır ve meta veri özelliklerinin en yaygın görüntü ve ses formatlarında nasıl saklanacağını tanımlar. Bu yazıda, .NET uygulamaları içinde C# kullanarak HEIF/HEIC görüntülerinin XMP ve EXIP meta verilerinin nasıl çıkarılacağını, güncelleneceğini ve kaldırılacağını öğreneceğiz.

Aşağıdaki konular aşağıda ele alınmıştır:

XMP ve EXIF Meta Verileri için .NET API’si

GroupDocs.Metadata, .NET uygulamalarında meta veri yönetimini otomatikleştirmek için .NET API sağlar. API, birçok dosya formatı için meta verileri okumaya, güncellemeye, eklemeye, temizlemeye/kaldırmaya ve geçiş yapmaya izin verir. EXIF, IPTC ve XMP gibi çeşitli meta veri standartları API tarafından desteklenir. [Meta veri işleme için desteklenen dosya biçimlerinin] tam listesi için belgeleri de ziyaret edebilirsiniz]5.

İndirilenler bölümünden DLL’leri veya MSI yükleyicisini indirebilir veya NuGet aracılığıyla .NET uygulamanıza API’yi yükleyebilirsiniz.

PM> Install-Package GroupDocs.Metadata

HEIC / HEIF Görüntülerinin EXIF verilerini C# ile okuyun

HEIC ve HEIF görüntülerinin EXIF verilerini okumak ve çıkarmak için adımlar aşağıdadır.

  • Metadata sınıfını kullanarak HEIF veya HEIC görüntüsünü yükleyin.
  • Kök paketi alın.
  • EXIF paketini kök paketten alın.
  • EXIF veri özelliklerini çaprazlayın.
  • Ayrıca EXIF paketinden IFD (Image File Directory) ve GPS bilgilerini alabilirsiniz.

Aşağıdaki kod, HEIC görüntüsünün EXIF verilerinin, IFD ve GPS meta veri bilgilerinin C# kullanarak nasıl alınacağını gösterir.

// HEIF / HEIC görüntülerinin EXIF, EXIF IFD, EXIF GPS Paketini C# ile okuyun
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);
        }
    }
}

HEIC / HEIF Görüntülerinin XMP verilerini C# ile okuyun

Aşağıdaki adımlar, HEIC veya HEIF görüntülerinin XMP meta verilerini okur.

  • Metadata sınıfını kullanarak HEIF veya HEIC görüntüsünü yükleyin.
  • getRootPackage yöntemini kullanarak kök paketi alın.
  • Kök paketten, XMP temel bilgilerini alabilirsiniz.
  • Ayrıca, DCMI Dublin Core bilgilerini alabilirsiniz.
  • Ek olarak, getPhotoshop yöntemini kullanarak Photoshop bilgilerini alabilirsiniz.

Aşağıdaki kaynak kodu, C# dilinde XMP temel, DCMI ve Photoshop bilgilerinin nasıl alınacağını gösterir.

// C# dilinde HEIC ve HEIF görüntülerinin XMP Basic, DublinCore ve Photoshop verilerini ayıklayın
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);
            // ... 
        }
        // ...
    }
}

Aynı şekilde, farklı XMP özelliklerini ayarlamak veya güncellemek için birçok ayarlayıcı yöntem vardır. Hatta özel XMP paketi özelliğini ayarlamak için kendi anahtar/değer çiftinizi sağlayabilirsiniz.

HEIC/HEIF Resimlerinin EXIF ve XMP Meta Verilerini C# ile Kaldırma

Tüm meta veri özelliklerini kaldırmak için ilgili EXIF paketini veya XMP paketini null olarak ayarlayabilirsiniz.

Aşağıdaki kod, C#‘daki HEIC görüntülerinin EXIF verilerini kaldırır.

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

Aşağıdaki kod, C#‘daki HEIC görüntülerinin XMP verilerini kaldırır.

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

Ücretsiz API Lisansı Alın

API’yi değerlendirme sınırlamaları olmadan kullanmak için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Özetlemek gerekirse, C#‘daki HEIF/HEIC görüntülerinden EXIF ve XMP meta verilerini çıkarmayı, güncellemeyi, kaldırmayı öğrendik. Ayrıca bu görsellerden IFD ve GPS bilgilerinin nasıl alındığını görmüş oldunuz. Artık bu bilgileri kolayca alabilir ve meta veri bilgilerini otomatikleştirmek için GroupDocs.Metadata Uygulama Ürün Ailesi gibi kendi uygulamalarınızı oluşturmaya başlayabilirsiniz.

Daha fazla bilgi, seçenek ve örnek için documentation ve GitHub deposunu ziyaret edebilirsiniz. Daha fazla soru için destek forum üzerinden bize ulaşın.

Ayrıca bakınız