ב פוסט הקודם, דנו כיצד להתמודד עם נתוני 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 שלו.
  • ברגע שיש לך את חבילת ה-EXIF, כעת תוכל לגשת למאפייני ה-EXIF של התמונה; כמו מותג, דגם, רוחב, אורך, תאריך ושעה, זכויות יוצרים, תוכנה וכו’ כפי שמוצג להלן בדוגמה של קוד 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 property של חבילת השורש.
  • חזור על חבילת 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 - להגדרת מידע זכויות יוצרים מעודכן.
  • באופן דומה, אתה יכול להגדיר את הערכים עבור האמן, יצרן, דגם, תוכנה, רוחב וגובה התמונה, DateTime וכו'.

עדכן את חבילת 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

בואו נדבר יותר @ פורום תמיכה בחינם.

מאמר קשור