ใน โพสต์ก่อนหน้า เราได้พูดถึงวิธีจัดการกับข้อมูล EXIF ของรูปภาพใน Java วันนี้เราจะมาดูการบรรลุสิ่งเดียวกันแต่ใน C# หากคุณยังไม่ได้เยี่ยมชมโพสต์ล่าสุด แต่คุณต้องการแยก อัปเดต เพิ่ม หรือลบข้อมูล EXIF ของรูปภาพของคุณโดยใช้โปรแกรมใน C# บทความนี้จะแนะนำคุณเกี่ยวกับสิ่งนี้ เราจะพูดถึงวิธีการจัดการกับข้อมูล EXIF ใน C# ดังต่อไปนี้:

ไลบรารี C# การจัดการข้อมูลเมตา

Metadata .NET API โดย GroupDocs

GroupDocs.Metadata for .NET คือการจัดการข้อมูลเมตา .NET API มีรายการ คุณลักษณะ มากมายสำหรับรูปแบบไฟล์ที่รองรับที่หลากหลาย มีความสามารถในการดึงข้อมูลเมตาจากรูปภาพ แต่ยังสามารถเพิ่ม แก้ไข อัปเดต และลบข้อมูลเมตาจากรูปภาพและเอกสารด้วยตัวเลือกต่างๆ

ในบทความนี้ เราจะใช้ API นี้ ดังนั้นโปรดแน่ใจว่าได้ ดาวน์โหลด ไบนารีหรือติดตั้ง API จาก NuGet

อ่านข้อมูล EXIF จากรูปภาพใน C#

คุณสามารถอ่านคุณสมบัติของข้อมูล EXIF ได้โดยทำตามขั้นตอนดังกล่าว เริ่มด้วยการดึงข้อมูล EXIF จากภาพนี้ เทพีเสรีภาพสูง 93 เมตร เราจะใช้ไฟล์ JPG เป็นภาพตัวอย่าง อย่างไรก็ตาม เราสามารถใช้ไฟล์ใดก็ได้ ไม่ว่าจะเป็น PNG, WebP, BMP, GIF, TIFF หรือไฟล์อื่นๆ จาก รูปแบบไฟล์ที่รองรับ ที่กล่าวถึงในตอนท้ายของ บทความนี้.

ภาพ Liberty JPG สำหรับข้อมูล EXIF
  • โหลดไฟล์ต้นฉบับของรูปภาพที่มีข้อมูล EXIF โดยใช้ตัวสร้างคลาส Metadata
  • รับรูทแพ็คเกจโดยเรียกเมธอด GetRootPackage()
  • จากรูทแพ็กเกจ รับ ExifPackage จาก ExifPackage property
  • เมื่อคุณมีแพ็คเกจ EXIF แล้ว คุณจะสามารถเข้าถึงคุณสมบัติ EXIF ของรูปภาพได้ เช่น Make, Model, Width, Length, DateTime, Copyright, Software, etc. ดังที่แสดงด้านล่างในตัวอย่างโค้ด 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);
     }
}

โค้ดด้านบนจะแสดงข้อมูล EXIF ที่มีอยู่ต่อไปนี้ของภาพ JPG ที่ให้มา

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

การอ่านข้อมูล EXIF IFD & GPS ของรูปภาพ

ข้อมูล EXIF ยังรวมถึงข้อมูล Exif IFD (ไดเรกทอรีไฟล์รูปภาพ) และข้อมูล GPS (ระบบกำหนดตำแหน่งบนพื้นโลก) ตอนนี้สำหรับข้อมูลแพ็คเกจ IFD และ GPS คุณเพียงแค่ต้องเข้าถึงคุณสมบัติของแพ็คเกจ EXIF เช่น ExifIfdPackage หรือ GpsPackage จากแพ็คเกจเหล่านี้ คุณสามารถดึงข้อมูลได้มากกว่าที่ระบุไว้ด้านล่าง:

  • หมายเลขซีเรียลของอุปกรณ์
  • ชื่อเจ้าของกล้อง
  • รูปแบบ CFA
  • ความเร็ว
  • ทิศทางของภาพ
  • ประทับวันที่
  • ข้อมูลพื้นที่
  • ระดับความสูง
  • ละติจูด
  • ลองจิจูด
  • เป็นต้น

สามารถเพิ่มรหัสที่กล่าวถึงด้านล่างในวิธีการด้านบนของคุณเพื่อแสดงข้อมูล EXIF พร้อมกับข้อมูล 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);

อ่านแท็ก EXIF ทั้งหมดของรูปภาพใน C#

คุณสามารถแยกคุณสมบัติ EXIF ทั้งหมดของภาพใดๆ ออกได้ โดยใช้วิธีที่ใกล้เคียงกันตามด้านบน:

  • โหลดรูปภาพด้วยตัวสร้าง Metadata
  • รับรูตแพ็กเกจโดยเรียกเมธอด GetRootPackage()
  • รับแพ็คเกจ EXIF จาก คุณสมบัติ ExifPackage ของแพ็คเกจรูท
  • วนซ้ำแพ็คเกจ EXIF และรับคู่ชื่อ-ค่าที่ต้องการ
  • ในทำนองเดียวกัน รับแพ็คเกจ IFD & GPS เพื่อแสดงคีย์และค่าของมัน
// 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);
        }
    }
}

อัปเดตคุณสมบัติ EXIF ใน C#

คุณสามารถเปลี่ยนข้อมูล EXIF ที่มีอยู่ของรูปภาพใดๆ ได้อย่างง่ายดาย ต่อไปนี้เป็นขั้นตอนที่คุณอาจปฏิบัติตาม:

อัปเดตแพ็คเกจ EXIF

  • รับรูตแพ็กเกจโดยเรียกเมธอด GetRootPackage()
  • ตั้งค่าคุณสมบัติ ExifPackage โดยกำหนดค่าใหม่ให้กับคุณสมบัติที่สอดคล้องกัน เช่น กำหนดค่าใหม่ให้กับ:
    • root.ExifPackage.Copyright - เพื่อตั้งค่าข้อมูลลิขสิทธิ์ที่อัปเดต
  • ในทำนองเดียวกัน คุณสามารถตั้งค่าสำหรับศิลปิน ยี่ห้อ รุ่น ซอฟต์แวร์ ความกว้างและความสูงของภาพ วันที่และเวลา ฯลฯ

อัปเดตแพ็คเกจ EXIF IFD

เช่นเดียวกับคุณสมบัติการตั้งค่าของแพ็คเกจ EXIF เราสามารถอัปเดตคุณสมบัติของแพ็คเกจ EXIF IFD และ GPS

  • กำหนดค่าให้ root.ExifPackage.ExifIfdPackage.CameraOwnerName เพื่อตั้งค่าเจ้าของกล้อง

คุณสามารถไปที่คลาส ExifIfdPackage หรือ ExifGpsPackage เพื่อรับแนวคิดเกี่ยวกับจำนวนที่คุณสามารถปรับแต่งสำหรับรูปภาพของคุณได้

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

ลบข้อมูลเมตา EXIF ออกจากรูปภาพใน C#

หากคุณต้องการลบแพ็คเกจ EXIF ออกจากไฟล์ใด ๆ เพียงตั้งค่าคุณสมบัติ ExifPackage เป็น 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");
    }
}

รูปภาพและรูปแบบอื่นๆ ที่รองรับ

ปัจจุบันเป็นรูปแบบไฟล์ที่รองรับโดย GroupDocs.Metadata สำหรับข้อมูล EXIF ของรูปภาพ ไฟล์เสียง และวิดีโอ คุณสามารถไปที่ เอกสาร เพื่อดูข้อมูลที่อัปเดตได้ตลอดเวลา

ประเภทเอกสาร รูปแบบไฟล์
รูปภาพ BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF
เสียงและวิดีโอ MP3, WAV, AVI, MOV / QT, FLV, ASF, DICOM

ดูเพิ่มเติมเกี่ยวกับ GroupDocs.Metadata

มาคุยกันดีกว่า @ [ฟอรัมสนับสนุนฟรี]]30

บทความที่เกี่ยวข้อง