HEIC (High-Efficiency Image Container) ظرفی است که می تواند حاوی تصاویر HEIF با فرمت تصویر با کارایی بالا باشد. XMP یک استاندارد فراداده مبتنی بر XML است که می تواند ویژگی های ابرداده را به صورت جفت نام/مقدار ذخیره کند. با این حال، EXIF (فرمت فایل تصویر قابل تعویض) استاندارد است و نحوه ذخیره ویژگی های ابرداده را در رایج ترین فرمت های تصویری و صوتی تعریف می کند. در این مقاله، نحوه استخراج، به روز رسانی و حذف فراداده های XMP و EXIP تصاویر HEIF/HEIC را با استفاده از C# در برنامه های NET یاد خواهیم گرفت.

موضوعات زیر در زیر پوشش داده شده است:

NET API برای XMP و EXIF Metadata

GroupDocs.Metadata .NET API را برای خودکارسازی مدیریت ابرداده در برنامه های NET فراهم می کند. API امکان خواندن، به روز رسانی، اضافه کردن، پاک کردن/حذف کردن و عبور از ابرداده را برای بسیاری از فرمت های فایل فراهم می کند. استانداردهای مختلف ابرداده مانند EXIF، IPTC و XMP توسط API پشتیبانی می شوند. همچنین می‌توانید از اسناد فهرست کامل [فرمت‌های فایل پشتیبانی‌شده برای دستکاری ابرداده5 دیدن کنید.

می‌توانید نصب‌کننده DLL یا MSI را از بخش دانلودها دانلود کنید یا از طریق NuGet API را در برنامه دات‌نت خود نصب کنید.

PM> Install-Package GroupDocs.Metadata

خواندن اطلاعات EXIF تصاویر HEIC / HEIF در C#

مراحل زیر برای خواندن و استخراج داده های EXIF تصاویر HEIC و HEIF است.

  • تصویر HEIF یا HEIC را با استفاده از کلاس Metadata بارگیری کنید.
  • بسته ریشه را دریافت کنید.
  • بسته EXIF را از بسته root بازیابی کنید.
  • از ویژگی های داده EXIF عبور کنید.
  • علاوه بر این، می توانید اطلاعات IFD (Image File Directory) و GPS را از بسته EXIF دریافت کنید.

کد زیر نحوه دریافت اطلاعات EXIF، اطلاعات فراداده IFD و GPS تصویر HEIC را با استفاده از C# نشان می دهد.

// EXIF، EXIF IFD، بسته GPS EXIF تصاویر HEIF / HEIC را در C# بخوانید
using (Metadata metadata = new Metadata(@"image.heic"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        const string pattern = "{0} = {1}";

        foreach (TiffTag tag in root.ExifPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }
    }
}

خواندن داده های XMP تصاویر HEIC / HEIF در C#

مراحل زیر فراداده XMP تصاویر HEIC یا HEIF را می‌خواند.

  • تصویر HEIF یا HEIC را با استفاده از کلاس Metadata بارگیری کنید.
  • بسته root را با استفاده از روش getRootPackage دریافت کنید.
  • از بسته ریشه، می توانید اطلاعات اولیه XMP را دریافت کنید.
  • علاوه بر این، می توانید اطلاعات DCMI Dublin Core را دریافت کنید.
  • علاوه بر این، می توانید اطلاعات فتوشاپ را با استفاده از روش getPhotoshop دریافت کنید.

کد منبع زیر نحوه دریافت اطلاعات پایه XMP، DCMI و Photoshop در C# را نشان می دهد.

// استخراج داده های XMP Basic، DublinCore و Photoshop تصاویر HEIC و HEIF در سی شارپ
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        if (root.XmpPackage.Schemes.XmpBasic != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
            // ...
        }
        if (root.XmpPackage.Schemes.DublinCore != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
            // ...
        }
        if (root.XmpPackage.Schemes.Photoshop != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
            // ... 
        }
        // ...
    }
}

به همین ترتیب، روش های تنظیم کننده زیادی برای تنظیم یا به روز رسانی ویژگی های XMP مختلف وجود دارد. حتی می‌توانید [برای تنظیم ویژگی بسته XMP سفارشی، جفت کلید-مقدار خود را ارائه کنید].

حذف فراداده های EXIF و XMP تصاویر HEIC/HEIF در سی شارپ

شما فقط می توانید بسته EXIF یا بسته XMP مربوطه را روی null تنظیم کنید تا تمام ویژگی های ابرداده حذف شود.

کد زیر داده های EXIF تصاویر HEIC را در C# حذف می کند.

using (Metadata metadata = new Metadata("image.heic"))
{
	IExif root = metadata.GetRootPackage() as IExif;
	if (root != null)
	{
		root.ExifPackage = null;
		metadata.Save("no-exif-image.heic");
	}
}

کد زیر داده های XMP تصاویر HEIC را در C# حذف می کند.

using (Metadata metadata = new Metadata("image.heic"))
{
	IXmp root = metadata.GetRootPackage() as IXmp;
	if (root != null)
	{
		root.XmpPackage = null;
		metadata.Save("no-xmp-image.heic");
	}
}

مجوز API رایگان دریافت کنید

برای استفاده از API بدون محدودیت ارزیابی، می توانید یک مجوز موقت رایگان دریافت کنید.

نتیجه

به طور خلاصه، ما یاد گرفته‌ایم که فراداده‌های EXIF و XMP را از تصاویر HEIF/HEIC در C# استخراج، به‌روزرسانی، حذف کنیم. علاوه بر این، نحوه دریافت اطلاعات IFD و GPS را از این تصاویر مشاهده کرده اید. اکنون می‌توانید به راحتی این اطلاعات را دریافت کنید و همچنین شروع به ساخت برنامه‌های کاربردی خود مانند GroupDocs.Metadata App Product Family کنید تا اطلاعات فراداده را خودکار کنید.

برای اطلاعات بیشتر، گزینه‌ها و مثال‌ها، می‌توانید از مستندات و مخزن GitHub دیدن کنید. برای سوالات بیشتر، با ما در بخش پشتیبانی [فروم 13 تماس بگیرید.

همچنین ببینید