HEIC ย่อมาจาก Image Container ประสิทธิภาพสูง เป็นนามสกุลไฟล์สำหรับภาพที่ถ่ายสำหรับอุปกรณ์ Apple บางรุ่น เป็นคอนเทนเนอร์ที่สามารถบรรจุอิมเมจรูปแบบ HEIF ที่มีประสิทธิภาพสูง ในบทความนี้ เราจะพูดถึงวิธีการแยก อัพเดต และลบข้อมูลเมตา EXIF และ XMP ของอิมเมจ HEIF/HEIC ภายในแอปพลิเคชัน Java
EXIF รูปแบบไฟล์รูปภาพที่แลกเปลี่ยนได้คือมาตรฐานที่กำหนดวิธีจัดเก็บคุณสมบัติข้อมูลเมตาในรูปแบบรูปภาพและเสียงที่พบมากที่สุด XMP เป็นมาตรฐานข้อมูลเมตาที่ใช้ XML ซึ่งสามารถจัดเก็บชุดคุณสมบัติข้อมูลเมตาใดๆ เป็นคู่ชื่อ/ค่า
หัวข้อต่อไปนี้ครอบคลุมด้านล่าง
- Metadata Java API สำหรับข้อมูล EXIF, XMP
- อ่านข้อมูล EXIF ของภาพ HEIC/HEIF
- อ่านข้อมูล XMP ของภาพ HEIC/HEIF
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 สำหรับคำถามเพิ่มเติม โปรดติดต่อเราที่การสนับสนุน ฟอรัม