Önceki gönderide, Java’daki görüntülerin EXIF verileriyle nasıl başa çıkılacağını tartıştık. Burada, bugün aynı şeyi C# ile başarmaya bakacağız. Son gönderiyi ziyaret etmediyseniz, ancak resimlerinizin EXIF verilerini programlı olarak C#’ta ayıklamak, güncellemek, eklemek veya kaldırmak istiyorsanız, bu makale size bu konuda rehberlik edecektir. C# dilinde EXIF verileriyle işlem yapmanın aşağıdaki yollarını ele alacağız:

Meta Veri Yönetimi C# Kitaplığı

Meta veri .NET API, GroupDocs tarafından

GroupDocs.Metadata for .NET, meta veri yönetimi .NET API’sidir. Çok çeşitli desteklenen dosya formatları için özellikler içeren uzun bir listeye sahiptir. Görsellerden metadata çıkarmanın yanı sıra çeşitli seçeneklerle resimlere ve belgelere metaveri ekleme, düzenleme, güncelleme ve metaveri çıkarma gibi işlemleri de yapabilmektedir.

Bu makalede, bu API’yi kullanacağız, bu yüzden lütfen ikili dosyalarını indirdiğinizden veya NuGet‘den API’yi yüklediğinizden emin olun.

C#‘daki Resimlerden EXIF Verilerini Okuyun

Belirtilen adımları izleyerek EXIF veri özelliklerini kolayca okuyabilirsiniz. Bu resimden EXIF verilerinin çıkarılmasıyla başlayan 93m yüksekliğindeki Özgürlük Heykeli. Burada örnek resim olarak bir JPG dosyası kullanacağız, ancak PNG, WebP, BMP, GIF, TIFF veya sonunda belirtilen desteklenen dosya biçimlerinden herhangi bir dosyayı kullanabiliriz. Bu makale.

EXIF verileri için Liberty JPG görüntüsü
  • Metadata sınıf yapıcısını kullanarak EXIF veri bilgilerini içeren görüntü kaynak dosyasını yükleyin.
  • GetRootPackage() yöntemini çağırarak kök paketini alın.
  • Kök paketten, ExifPackage öğesini ExifPackage özelliğinden alın.
  • EXIF paketine sahip olduğunuzda, artık görüntünün EXIF özelliklerine erişebilirsiniz; Aşağıda C# kod örneğinde gösterildiği gibi Marka, Model, Genişlik, Uzunluk, DateTime, Telif Hakkı, Yazılım vb.
// 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);
     }
}

Yukarıdaki kod, sağlanan JPG görüntüsünün aşağıdaki mevcut EXIF bilgilerini gösterecektir.

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

Görüntünün EXIF IFD ve GPS Bilgilerini Okuma

EXIF verileri ayrıca Exif IFD (Görüntü Dosyası Dizini) ve GPS (Küresel Konumlandırma Sistemi) Bilgilerini içerir. Şimdi IFD ve GPS paketi bilgileri için, EXIF paketinin ExifIfdPackage veya GpsPackage gibi ilgili özelliklerine erişmeniz yeterlidir. Bu paketlerden aşağıda belirtilenden çok daha fazla bilgi çıkarabilirsiniz:

  • Cihaz seri numarası
  • Kamera Sahibi adı
  • CFA Deseni
  • Hız
  • Görüntü Yönü
  • Tarih damgası
  • Alan Bilgileri
  • Rakım
  • Enlem
  • Boylam
  • vb.

EXIF verilerini IFD ve GPS bilgileriyle birlikte görüntülemek için yukarıdaki yönteminize aşağıda belirtilen kod eklenebilir.

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

Resimlerin Tüm EXIF Etiketlerini C# ile Okuyun

Herhangi bir görüntünün tüm EXIF özelliklerini çıkartabilirsiniz, bunu yukarıdakine neredeyse benzer bir şekilde yapabilirsiniz:

  • Görüntüyü Metadata oluşturucu ile yükleyin.
  • GetRootPackage() yöntemini çağırarak kök paketi alın.
  • Kök paketin ExifPackage özelliğinden EXIF paketini alın.
  • EXIF paketini yineleyin ve istenen ad-değer çiftlerini elde edin.
  • Benzer şekilde, anahtarlarını ve değerlerini görüntülemek için IFD & GPS paketlerini edinin.
// 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);
        }
    }
}

C# dilinde EXIF Özelliklerini Güncelleyin

Herhangi bir görüntünün mevcut EXIF verilerini kolayca değiştirebilirsiniz. Takip edebileceğiniz adımlar şunlardır:

EXIF Paketini Güncelle

  • GetRootPackage() yöntemini çağırarak kök paketi alın.
  • ExifPackage özelliklerini, aşağıdakilere yeni değer atamak gibi ilgili özelliklere yeni değerler atayarak ayarlayın:
    • root.ExifPackage.Copyright - güncellenmiş telif hakkı bilgilerini ayarlamak için.
  • Benzer şekilde, sanatçı, marka, model, yazılım, görüntü genişliği ve yüksekliği, DateTime, vb. için değerleri ayarlayabilirsiniz.

EXIF IFD Paketini Güncelle

EXIF paketinin ayar özelliklerine benzer şekilde, EXIF IFD ve GPS paketlerinin özelliklerini güncelleyebiliriz.

  • Kamera sahibini ayarlamak için root.ExifPackage.ExifIfdPackage.CameraOwnerName değerine atayın.

Resimlerinizi ne kadar özelleştirebileceğiniz konusunda fikir edinmek için ExifIfdPackage veya ExifGpsPackage sınıflarını ziyaret edebilirsiniz.

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

C#‘daki Resimlerden EXIF Meta Verilerini Kaldırma

EXIF paketini herhangi bir dosyadan kaldırmak istiyorsanız, ExifPackage özelliğini null olarak ayarlamanız yeterlidir.

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

Desteklenen Görseller ve Diğer Formatlar

Bunlar, resimlerin, seslerin ve videoların EXIF veri bilgileri için GroupDocs.Metadata tarafından şu anda desteklenen dosya biçimleridir. Güncel bilgiler için her zaman belgeleri ziyaret edebilirsiniz.

Belge Türü Dosya Biçimleri
Resimler BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF
Ses ve Video MP3, WAV, AVI, MOV / QT, FLV, ASF, DICOM

GroupDocs.Metadata hakkında daha fazlasını görün

Daha fazla konuşalım @ Ücretsiz Destek Forumu.

İlgili Makale