افزودن یا حذف متادیتای XMP سفارشی از GIF با استفاده از C#

پلتفرم فرامینی متادیتا (XMP) به صورت متن فرمت شده XML رمزگذاری شده است. مدل داده XMP تعریف شده می‌تواند برای ذخیره هر مجموعه‌ای از ویژگی‌های متادیتا به صورت جفت نام/مقدار استفاده شود. شما می‌توانید به طور برنامه‌نویسی یک بسته متادیتا XMP سفارشی به تصاویر خود اضافه کنید. در این مقاله، شما یاد خواهید گرفت که چگونه متادیتا XMP سفارشی را از GIF با استفاده از C# اضافه یا حذف کنید.

موضوعات زیر در این مقاله مورد بحث/بررسی قرار گرفته است:

API C# برای افزودن یا حذف متاداده XMP

من از GroupDocs.Metadata for .NET API برای افزودن یا حذف بسته‌ی متادیتای XMP سفارشی استفاده خواهم کرد. این امکان را به شما می‌دهد که خواص متادیتا را از اسناد و فرمت‌های فایل تصویر اضافه، ویرایش، بازیابی و حذف کنید. این API با مشهورترین استانداردهای متادیتا مانند متادیتای داخلی، XMP، EXIF، IPTC، بلوک‌های منبع تصویر، ID3 و خواص متادیتای سفارشی کار می‌کند. این API می‌تواند برای توسعه‌ی برنامه‌ها در هر محیط توسعه‌ای که هدف آن پلتفرم .NET است، مورد استفاده قرار گیرد.

شما می‌توانید یا دانلود DLL API را کنید یا آن را با استفاده از NuGet نصب کنید.

Install-Package GroupDocs.Metadata

افزودن بسته متاداده سفارشی XMP به GIF با استفاده از C#

شما می‌توانید به راحتی یک بسته XMP کاملاً سفارشی حاوی ویژگی‌های تعیین شده توسط کاربر را با دنبال کردن مراحل ساده زیر ایجاد و اضافه کنید:

  • یک نمونه از کلاس Metadata را ایجاد کنید
  • Provide path of the GIF image
  • GetRootPackage as IXmp standard
  • یک نمونه از XmpPackage کلاس ایجاد کنید
  • Provide package Prefix and NamespaceUri
  • Set properties in Name/ Value pair using Set method
  • یک نمونه از XmpPacketWrapper کلاس ایجاد کنید
  • متد AddPackage را فراخوانی کنید و XmpPackage ایجاد شده را عبور دهید.
  • مجموعه XmpPacketWrapper ایجاد شده را به IXMp.XmpPackage اختصاص دهید.
  • خروجی فایل را با استفاده از Metadata.Save متد ذخیره کنید

نمونه کد زیر نشان می‌دهد که چگونه می‌توان یک بسته متای XMP سفارشی را به تصویر GIF اضافه کرد و آن را ایجاد کرد با استفاده از C# .

using (Metadata metadata = new Metadata(@"C:\Files\xmp.gif")) {

  IXmp root = (IXmp)metadata.GetRootPackage();
  XmpPacketWrapper packet = new XmpPacketWrapper();

  XmpPackage custom = new XmpPackage("gd", "https://groupdocs.com");
  custom.Set("gd:Copyright", "Copyright (C) 2021 GroupDocs. All Rights Reserved.");
  custom.Set("gd:CreationDate", DateTime.Now.ToString());
  custom.Set("gd:Company", XmpArray.From(new String[] { "Aspose", "GroupDocs" }, XmpArrayType.Ordered));

  packet.AddPackage(custom);
  root.XmpPackage = packet;
  metadata.Save(@"C:\Files\xmp_output.gif");
}

کد نمونه بالا بسته متاداده XMP را به تصویر ورودی اضافه خواهد کرد. ExifTool متاداده زیر را از تصویر GIF خروجی تولید شده خواند.

Add بسته متادیتای XMP به GIF با استفاده از C#

Add XMP Metadata Package to GIF using C#

رابطه IXMP ویژگی XmpPackage{.brokenlink} را برای دریافت یا تنظیم بسته متاداده XMP افشا می‌کند.

کلاس Metadata متد GetRootPackage را برای به‌دست‌آوردن بسته ریشه‌ای که دسترسی به تمام ویژگی‌های متادیتا استخراج‌شده از فایل را فراهم می‌کند، ارائه می‌دهد.

کلاس XmpPackage خواص مختلفی را برای تعریف بسته ارائه می‌دهد، مانند Prefix، NamespaceUri و Keys. این کلاس همچنین متدهای Set را برای تنظیم نام/ مقدار برای خواص متاداده تعریف‌شده توسط کاربر ارائه می‌دهد.

کلاس XmpPacketWrapper حاوی بسته XMP سریالی شده است. متد AddPackage این کلاس اجازه می‌دهد تا بسته سفارشی تعریف شده را اضافه کنید.

شما می‌توانید جزئیات بیشتری درباره `Working with XMP Metadata” در مستندات پیدا کنید.

خواص متاداده بسته XMP سفارشی را با استفاده از C# بخوانید

شما می‌توانید به راحتی همه‌ی خواص تعریف‌شده توسط کاربر در بسته‌ی XMP سفارشی را با دنبال کردن مراحل ساده‌ای که در زیر ذکر شده‌اند، بخوانید:

  • یک نمونه از کلاس Metadata را ایجاد کنید
  • Provide the path of the GIF image
  • GetRootPackage as IXmp standard
  • همه بسته‌ها را یکی یکی از IXmp.XmpPackage.Packages بگیرید
  • NamespaceUri و Prefix را برای هر بسته دریافت کنید
  • Call FindProperties for each package Key to get property name and value

کد نمونه زیر نشان می‌دهد که چگونه می‌توان تمامی ویژگی‌های تعریف شده در بسته XMP سفارشی را با استفاده از C# خواند.

string file = @"C:\Files\xmp_output.gif";
using (Metadata metadata = new Metadata(file)) 
{
  IXmp root = (IXmp)metadata.GetRootPackage();

  if (root.XmpPackage != null)
  {
    foreach (var package in root.XmpPackage.Packages)
    {
      Console.WriteLine(package.NamespaceUri);
      Console.WriteLine(package.Prefix);

      foreach(var keys in package.Keys)
      {
        var property = package.FindProperties(p => p.Name == keys).FirstOrDefault();
        Console.WriteLine(property.Name + " : " + property.Value);
      }
    }
  }
}

نمونه کد بالا باید خروجی زیر را تولید کند:

https://groupdocs.com
gd
gd:Copyright: Copyright (C) 2021 GroupDocs. All Rights Reserved.
gd:CreationDate: 04/05/2021 2:26:17 am
gd:Company: <rdf:Seq><rdf:li>Aspose</rdf:li><rdf:li>GroupDocs</rdf:li></rdf:Seq>

متد FindProperties از کلاس XmpPackage به طور بازگشتی جستجو می‌کند و ویژگی‌های متادیتا را که شرط مشخص شده را برآورده می‌کنند، پیدا می‌کند.

حذف بسته XMP سفارشی با استفاده از C#

شما می‌توانید بسته XMP را از تصاویر GIF با دنبال کردن مراحل ساده زیر حذف کنید:

کد نمونه زیر نشان می‌دهد که چگونه می‌توان بسته متادیتای XMP را از تصویر GIF با استفاده از C# حذف کرد.

using (Metadata metadata = new Metadata(@"C:\Files\xmp_output.gif"))
{
  IXmp root = (IXmp)metadata.GetRootPackage();
  root.XmpPackage = null;
  metadata.Save(@"C:\Files\xmp_output_Removed.gif");
}

کد نمونه بالا بسته متاداده XMP را از تصویر ورودی حذف خواهد کرد. ExifTool متاداده زیر را از تصویر GIF خروجی تولید شده خواند.

Remove XMP Metadata Package from GIF using C#

حذف بسته متاداده XMP از GIF با استفاده از C#

مجوز رایگان بگیرید

شما می‌توانید API را بدون محدودیت‌های ارزیابی با درخواست یک مجوز موقتی رایگان امتحان کنید.

نتیجه گیری

در این مقاله، شما یاد گرفتید که چگونه متادادهٔ سفارشی بستهٔ XMP را از تصاویر GIF با استفاده از C# اضافه یا حذف کنید. شما همچنین یاد گرفتید که چگونه خواص بستهٔ XMP را با استفاده از C# بخوانید. علاوه بر این، می‌توانید در مورد API GroupDocs.Metadata برای .NET با استفاده از documentation یاد بگیرید. در صورت وجود هر گونه ابهام، لطفاً احساس رایگان کنید که با ما تماس بگیرید در forum.

به همچنین دقت کنید