HEIC مخفف High-Efficiency Image Container است. این پسوند فایل برای تصاویر گرفته شده برای برخی از دستگاه های اپل است. این ظرفی است که می تواند حاوی تصاویر HEIF با فرمت تصویر با کارایی بالا باشد. در این مقاله، نحوه استخراج، به روز رسانی و حذف ابرداده های EXIF و XMP تصاویر HEIF/HEIC در برنامه های Java را مورد بحث قرار خواهیم داد.

EXIF، فرمت فایل تصویری مبادله‌ای استانداردی است که نحوه ذخیره ویژگی‌های ابرداده را در رایج‌ترین فرمت‌های تصویری و صوتی تعریف می‌کند. XMP یک استاندارد فراداده مبتنی بر XML است که می تواند هر مجموعه ای از ویژگی های ابرداده را به عنوان جفت نام/مقدار ذخیره کند.

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

Java API برای فراداده EXIF و XMP

GroupDocs.Metadata API دستکاری ابرداده را برای برنامه های Java شما فراهم می کند. API امکان خواندن، به روز رسانی، افزودن، پاک کردن/حذف کردن و عبور از ویژگی ها را برای بسیاری از فرمت های فایل فراهم می کند. از استانداردهای متادیتا مختلفی مانند EXIF، IPTC و XMP پشتیبانی می کند. اسناد پردازش کلمه، صفحات گسترده، ارائه ها، پیام های ایمیل، کتاب های الکترونیکی، تصاویر، نقشه های اتوکد، فایل های صوتی و تصویری، تورنت ها از جمله فرمت های سند پشتیبانی شده هستند. به طور دقیق‌تر، می‌توانید از مستندات فهرست کامل [فرمت‌های فایل پشتیبانی‌شده برای دستکاری ابرداده6 دیدن کنید.

دانلود و پیکربندی کنید

کتابخانه ابرداده را از بخش دانلودها دریافت کنید. برای برنامه Java مبتنی بر Maven خود، فقط پیکربندی pom.xml زیر را اضافه کنید. پس از این، می‌توانید نمونه‌های این مقاله و همچنین نمونه‌های دیگر موجود در GitHub را امتحان کنید. برای جزئیات، می توانید از مرجع API دیدن کنید.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>21.4</version> 
</dependency>

داده های EXIF تصاویر HEIF / HEIC را در Java بخوانید

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

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

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

// خواندن EXIF، EXIF IFD، بسته GPS EXIF از تصاویر HEIF / HEIC در جاوا
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // اطلاعات بسته EXIF را دریافت کنید
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // اطلاعات بسته EXIF IFD را دریافت کنید
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // اطلاعات GPS را دریافت کنید
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

داده های XMP تصاویر HEIC / HEIF را در Java بخوانید

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

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

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

// داده های XMP Basic، DublinCore و Photoshop تصاویر heic و heif را در Java استخراج کنید
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP Basic    
    if (root.getXmpPackage().getSchemes().getXmpBasic() != null) {
        XmpBasicPackage xmpBasicPackage = root.getXmpPackage().getSchemes().getXmpBasic();
	System.out.println("Creator Tool : " + xmpBasicPackage.getCreatorTool());
	System.out.println("Create Date : " + xmpBasicPackage.getCreateDate());
	System.out.println("Modify Date : " + xmpBasicPackage.getModifyDate());
	System.out.println("Label : " + xmpBasicPackage.getLabel());
	System.out.println("Nick Name: " + xmpBasicPackage.getNickname());
	// ...
    }
    // اطلاعات DublinCore
    if (root.getXmpPackage().getSchemes().getDublinCore() != null) {
	XmpDublinCorePackage xmpDublinCorePackage = root.getXmpPackage().getSchemes().getDublinCore();
	System.out.println("Format : " + xmpDublinCorePackage.getFormat());
	System.out.println("Coverage :" + xmpDublinCorePackage.getCoverage());
	System.out.println("Identifier : " + xmpDublinCorePackage.getIdentifier());
	System.out.println("Source : " + xmpDublinCorePackage.getSource());
	// ...
    }
    // اطلاعات فتوشاپ
    if (root.getXmpPackage().getSchemes().getPhotoshop() != null) {
	XmpPhotoshopPackage xmpPhotoshopPackage = root.getXmpPackage().getSchemes().getPhotoshop();
	System.out.println("Color Mode : " + xmpPhotoshopPackage.getColorMode());
	System.out.println("ICC Profile : " + xmpPhotoshopPackage.getIccProfile());
	System.out.println("Country : " + xmpPhotoshopPackage.getCountry());
	System.out.println("City : " + xmpPhotoshopPackage.getCity());
	System.out.println("Date Created : " + xmpPhotoshopPackage.getDateCreated());
	// ...
    }
}

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

فراداده های EXIF و XMP تصاویر HEIC/HEIF را در Java حذف کنید

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

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

try (Metadata metadata = new Metadata("image.heic")) {
	IExif root = (IExif) metadata.getRootPackage();
	root.setExifPackage(null);
	metadata.save("no-exif-image.heic");
}

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

try (Metadata metadata = new Metadata("image.heic")) {
	IXmp root = (IXmp) metadata.getRootPackage();
	root.setXmpPackage(null);
	metadata.save("no-xmp-image.heic");
}

نتیجه

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

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

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