Di posting sebelumnya, kami membahas cara menangani data gambar EXIF di Java. Di sini, hari ini kita akan melihat untuk mencapai hal yang sama tetapi dalam C#. Jika Anda belum mengunjungi posting terakhir, tetapi Anda ingin mengekstrak, memperbarui, menambah atau menghapus data EXIF dari gambar Anda secara terprogram dalam C#, maka artikel ini akan memandu Anda melaluinya. Kami akan membahas cara-cara berikut untuk memanipulasi dengan data EXIF di C#:

Pustaka C# Manajemen Metadata

Metadata .NET API oleh GroupDocs

GroupDocs.Metadata for .NET adalah pengelolaan metadata .NET API. Ini memiliki daftar panjang fitur untuk berbagai format file yang didukung. Ini memiliki kemampuan untuk tidak hanya mengekstrak metadata dari gambar tetapi juga dapat menambah, mengedit, memperbarui, dan menghapus metadata dari gambar dan dokumen dengan berbagai pilihan.

Pada artikel ini, kami akan menggunakan API ini, jadi pastikan untuk mengunduh binarinya atau menginstal API dari NuGet.

Baca Data EXIF dari Gambar di C#

Anda dapat dengan mudah membaca properti data EXIF dengan mengikuti langkah-langkah yang disebutkan. Dimulai dengan ekstraksi data EXIF dari gambar ini, Patung Liberty setinggi 93m. Di sini kami akan menggunakan file JPG sebagai contoh gambar, namun, kami dapat menggunakan file apa pun baik itu PNG, WebP, BMP, GIF, TIFF, atau lainnya dari format file yang didukung yang disebutkan di akhir artikel ini.

Gambar Liberty JPG untuk data EXIF
  • Muat file sumber gambar yang berisi informasi data EXIF menggunakan konstruktor kelas Metadata.
  • Dapatkan paket root-nya dengan memanggil metode GetRootPackage().
  • Dari paket root, dapatkan ExifPackage dari properti ExifPackage.
  • Setelah Anda memiliki paket EXIF, kini Anda dapat mengakses properti EXIF dari gambar; seperti Make, Model, Width, Length, DateTime, Copyright, Software, dll seperti yang ditunjukkan di bawah ini dalam contoh kode C#.
// 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);
     }
}

Kode di atas akan menampilkan informasi EXIF berikut yang tersedia dari gambar JPG yang disediakan.

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

Membaca Informasi EXIF IFD & GPS dari Gambar

Data EXIF juga menyertakan Informasi Exif IFD (Image File Directory) dan GPS (Global Positioning System). Sekarang untuk informasi paket IFD dan GPS, Anda hanya perlu mengakses properti masing-masing paket EXIF yaitu ExifIfdPackage atau GpsPackage. Dari paket-paket ini, Anda dapat mengekstrak lebih banyak informasi daripada yang disebutkan di bawah ini:

  • Nomor seri perangkat
  • Nama Pemilik Kamera
  • Pola CFA
  • Kecepatan
  • Arah Gambar
  • Cap tanggal
  • Informasi Wilayah
  • Ketinggian
  • Garis Lintang
  • Garis bujur
  • dll.

Kode yang disebutkan di bawah ini dapat ditambahkan dalam metode Anda di atas untuk menampilkan data EXIF bersama dengan informasi IFD & GPS.

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

Baca Semua Tag EXIF Gambar di C#

Anda dapat mengekstrak semua properti EXIF dari gambar apa pun, Anda dapat melakukannya dengan cara yang hampir sama seperti di atas:

  • Muat gambar dengan konstruktor Metadata.
  • Dapatkan paket root dengan memanggil metode GetRootPackage().
  • Dapatkan paket EXIF dari properti ExifPackage dari paket root.
  • Ulangi paket EXIF dan dapatkan pasangan nama-nilai yang diinginkan.
  • Demikian pula, dapatkan paket IFD & GPS untuk menampilkan kunci dan nilainya.
// 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);
        }
    }
}

Perbarui Properti EXIF di C#

Anda dapat mengubah data EXIF yang ada dari gambar apa pun dengan mudah. Berikut adalah langkah-langkah yang dapat Anda ikuti:

Perbarui Paket EXIF

  • Dapatkan paket root dengan memanggil metode GetRootPackage().
  • Setel properti ExifPackage dengan menetapkan nilai baru ke properti terkait seperti menetapkan nilai baru ke:
    • root.ExifPackage.Copyright - untuk mengatur informasi hak cipta yang diperbarui.
  • Demikian pula, Anda dapat mengatur nilai untuk artis, pembuat, model, perangkat lunak, lebar & tinggi gambar, DateTime, dll.

Perbarui Paket IFD EXIF

Mirip dengan properti pengaturan paket EXIF, kami dapat memperbarui properti paket EXIF IFD dan GPS.

  • Tetapkan nilai ke root.ExifPackage.ExifIfdPackage.CameraOwnerName untuk mengatur pemilik kamera.

Anda dapat mengunjungi kelas ExifIfdPackage atau ExifGpsPackage untuk mendapatkan ide tentang seberapa banyak Anda dapat menyesuaikan gambar Anda.

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

Hapus Metadata EXIF dari Gambar di C#

Jika Anda ingin menghapus paket EXIF dari file apa pun, cukup setel properti ExifPackage ke 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");
    }
}

Gambar yang Didukung & Format Lain

Ini adalah format file yang saat ini didukung oleh GroupDocs.Metadata untuk informasi data EXIF gambar, audio, dan video. Anda selalu dapat mengunjungi dokumentasi untuk informasi terbaru.

Jenis Dokumen Format File
Gambar 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

Lihat selengkapnya tentang GroupDocs.Metadata

Mari kita bicara lebih banyak @ Forum Dukungan Gratis.

Artikel Terkait