HEIC ย่อมาจาก Image Container ประสิทธิภาพสูง เป็นนามสกุลไฟล์สำหรับภาพที่ถ่ายสำหรับอุปกรณ์ Apple บางรุ่น เป็นคอนเทนเนอร์ที่สามารถบรรจุอิมเมจรูปแบบ HEIF ที่มีประสิทธิภาพสูง ในบทความนี้ เราจะพูดถึงวิธีการแยก อัพเดต และลบข้อมูลเมตา EXIF และ XMP ของอิมเมจ HEIF/HEIC ภายในแอปพลิเคชัน Java

EXIF รูปแบบไฟล์รูปภาพที่แลกเปลี่ยนได้คือมาตรฐานที่กำหนดวิธีจัดเก็บคุณสมบัติข้อมูลเมตาในรูปแบบรูปภาพและเสียงที่พบมากที่สุด XMP เป็นมาตรฐานข้อมูลเมตาที่ใช้ XML ซึ่งสามารถจัดเก็บชุดคุณสมบัติข้อมูลเมตาใดๆ เป็นคู่ชื่อ/ค่า

หัวข้อต่อไปนี้ครอบคลุมด้านล่าง

Java API สำหรับข้อมูลเมตา EXIF และ XMP

GroupDocs.Metadata ให้ API การจัดการข้อมูลเมตาสำหรับแอปพลิเคชัน Java ของคุณ API อนุญาตให้อ่าน อัปเดต เพิ่ม ล้าง/ลบ และสำรวจฟีเจอร์สำหรับไฟล์หลายรูปแบบ รองรับมาตรฐานข้อมูลเมตาต่างๆ เช่น EXIF, IPTC และ XMP เอกสารการประมวลผลคำ, สเปรดชีต, งานนำเสนอ, ข้อความอีเมล, eBooks, รูปภาพ, ภาพวาด AutoCAD, ไฟล์เสียงและวิดีโอ, torrents เป็นรูปแบบเอกสารที่รองรับ แม่นยำยิ่งขึ้น คุณสามารถไปที่เอกสารประกอบเพื่อดูรายการ [รูปแบบไฟล์ที่รองรับสำหรับการจัดการข้อมูลเมตา] ทั้งหมด 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 จากแพ็คเกจรูท
  • จากแพ็คเกจ EXIF คุณสามารถสำรวจคุณสมบัติข้อมูล EXIF
  • นอกจากนี้ คุณยังสามารถรับ IFD (Image File Directory) และข้อมูล GPS ได้จากแพ็คเกจ EXIF

รหัสต่อไปนี้แสดงวิธีรับข้อมูล EXIF, ข้อมูลเมตา IFD และ GPS ของภาพ HEIC โดยใช้ Java

// อ่าน EXIF, EXIF IFD, EXIF GPS Package ของภาพ HEIF / HEIC ใน Java
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
  • รับรูทแพ็กเกจโดยใช้เมธอด getRootPackage
  • จากรูทแพ็กเกจ คุณจะได้รับข้อมูลพื้นฐานของ XMP
  • นอกจากนี้ คุณสามารถรับข้อมูล DCMI Dublin Core
  • นอกจากนี้ คุณสามารถรับข้อมูล Photoshop โดยใช้วิธี getPhotoshop

ซอร์สโค้ดต่อไปนี้แสดงวิธีรับข้อมูลพื้นฐาน XMP, DCMI และ Photoshop ใน Java

// แยกข้อมูล XMP พื้นฐาน, DublinCore และ Photoshop ของภาพ heic และ heif ใน Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP พื้นฐาน    
    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());
	// ...
    }
    // ข้อมูลดับลินคอร์
    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());
	// ...
    }
    // ข้อมูล Photoshop
    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());
	// ...
    }
}

ในทำนองเดียวกัน มีวิธี setter มากมายในการตั้งค่าหรืออัพเดตคุณสมบัติ XMP ที่แตกต่างกัน คุณยังสามารถระบุคู่คีย์-ค่าของคุณเองเพื่อ set the custom XMP package property

ลบข้อมูลเมตา 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 เพื่อทำให้ข้อมูลเมตาดาต้าเป็นแบบอัตโนมัติ

สำหรับข้อมูลเพิ่มเติม ตัวเลือก และตัวอย่าง คุณสามารถไปที่ documentation และ GitHub repository สำหรับคำถามเพิ่มเติม โปรดติดต่อเราที่การสนับสนุน ฟอรัม

ดูสิ่งนี้ด้วย