ใน โพสต์ก่อนหน้า เราได้พูดถึงวิธีจัดการกับข้อมูล EXIF ของรูปภาพใน Java วันนี้เราจะมาดูการบรรลุสิ่งเดียวกันแต่ใน C# หากคุณยังไม่ได้เยี่ยมชมโพสต์ล่าสุด แต่คุณต้องการแยก อัปเดต เพิ่ม หรือลบข้อมูล EXIF ของรูปภาพของคุณโดยใช้โปรแกรมใน C# บทความนี้จะแนะนำคุณเกี่ยวกับสิ่งนี้ เราจะพูดถึงวิธีการจัดการกับข้อมูล EXIF ใน C# ดังต่อไปนี้:
ไลบรารี C# การจัดการข้อมูลเมตา
GroupDocs.Metadata for .NET คือการจัดการข้อมูลเมตา .NET API มีรายการ คุณลักษณะ มากมายสำหรับรูปแบบไฟล์ที่รองรับที่หลากหลาย มีความสามารถในการดึงข้อมูลเมตาจากรูปภาพ แต่ยังสามารถเพิ่ม แก้ไข อัปเดต และลบข้อมูลเมตาจากรูปภาพและเอกสารด้วยตัวเลือกต่างๆ
ในบทความนี้ เราจะใช้ API นี้ ดังนั้นโปรดแน่ใจว่าได้ ดาวน์โหลด ไบนารีหรือติดตั้ง API จาก NuGet
อ่านข้อมูล EXIF จากรูปภาพใน C#
คุณสามารถอ่านคุณสมบัติของข้อมูล EXIF ได้โดยทำตามขั้นตอนดังกล่าว เริ่มด้วยการดึงข้อมูล EXIF จากภาพนี้ เทพีเสรีภาพสูง 93 เมตร เราจะใช้ไฟล์ JPG เป็นภาพตัวอย่าง อย่างไรก็ตาม เราสามารถใช้ไฟล์ใดก็ได้ ไม่ว่าจะเป็น PNG, WebP, BMP, GIF, TIFF หรือไฟล์อื่นๆ จาก รูปแบบไฟล์ที่รองรับ ที่กล่าวถึงในตอนท้ายของ บทความนี้.
- โหลดไฟล์ต้นฉบับของรูปภาพที่มีข้อมูล 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
- เอกสารประกอบ - .NET | ชวา
- ตัวอย่างซอร์สโค้ด
- การอ้างอิง API
- GroupDocs.Metadata – โซลูชันการจัดการข้อมูลเมตา
มาคุยกันดีกว่า @ [ฟอรัมสนับสนุนฟรี]]30