HEIC는 고효율 이미지 컨테이너를 나타냅니다. 일부 Apple 장치에 대해 캡처된 이미지의 파일 확장자입니다. 고효율 이미지 포맷 HEIF 이미지를 담을 수 있는 컨테이너입니다. 이 기사에서는 Java 애플리케이션 내에서 HEIF/HEIC 이미지의 EXIF 및 XMP 메타데이터를 추출, 업데이트 및 제거하는 방법에 대해 설명합니다.

EXIF, 교환 가능한 이미지 파일 형식은 가장 일반적인 이미지 및 오디오 형식으로 메타데이터 속성을 저장하는 방법을 정의하는 표준입니다. XMP는 모든 메타데이터 속성 집합을 이름/값 쌍으로 저장할 수 있는 XML 기반 메타데이터 표준입니다.

다음 주제는 아래에서 다룹니다.

EXIF 및 XMP 메타데이터용 Java API

GroupDocs.Metadata는 Java 애플리케이션을 위한 메타데이터 조작 API를 제공합니다. API를 사용하면 다양한 파일 형식에 대한 기능을 읽고, 업데이트하고, 추가하고, 정리/제거하고, 트래버스할 수 있습니다. EXIF, IPTC 및 XMP와 같은 다양한 메타데이터 표준을 지원합니다. 워드 프로세싱 문서, 스프레드시트, 프리젠테이션, 이메일 메시지, eBook, 이미지, AutoCAD 도면, 오디오 및 비디오 파일, 토렌트 등이 지원되는 문서 형식입니다. 보다 정확하게는 메타데이터 조작을 위해 지원되는 파일 형식의 전체 목록에 대한 문서를 방문할 수 있습니다.

다운로드 및 구성

다운로드 섹션에서 메타데이터 라이브러리를 가져옵니다. Maven 기반 Java 애플리케이션의 경우 다음 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>

Java에서 HEIF/HEIC 이미지의 EXIF 데이터 읽기

다음은 HEIC 및 HEIF 이미지의 EXIF 데이터를 읽고 추출하는 단계입니다.

  • Metadata 클래스를 사용하여 HEIF 또는 HEIC 이미지를 로드합니다.
  • 루트 패키지를 가져옵니다.
  • 루트 패키지에서 EXIF 패키지를 검색합니다.
  • EXIF 패키지에서 EXIF 데이터 속성을 탐색할 수 있습니다.
  • 또한 EXIF 패키지에서 IFD(Image File Directory) 및 GPS 정보를 얻을 수 있습니다.

다음 코드는 Java를 사용하여 HEIC 이미지의 EXIF 데이터, IFD 및 GPS 메타데이터 정보를 가져오는 방법을 보여줍니다.

// Java에서 HEIF/HEIC 이미지의 EXIF, EXIF IFD, EXIF GPS 패키지 읽기
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()));
    }
}

Java에서 HEIC/HEIF 이미지의 XMP 데이터 읽기

다음 단계는 HEIC 또는 HEIF 이미지의 XMP 메타데이터를 읽습니다.

  • Metadata 클래스를 사용하여 HEIF 또는 HEIC 이미지를 로드합니다.
  • getRootPackage 메소드를 사용하여 루트 패키지를 가져옵니다.
  • 루트 패키지에서 XMP 기본 정보를 얻을 수 있습니다.
  • 또한 DCMI Dublin Core 정보를 얻을 수 있습니다.
  • 또한 getPhotoshop 메서드를 사용하여 Photoshop 정보를 얻을 수 있습니다.

다음 소스 코드는 Java에서 XMP 기본, DCMI 및 Photoshop 정보를 얻는 방법을 보여줍니다.

// Java에서 heic 및 heif 이미지의 XMP 기본, DublinCore 및 Photoshop 데이터 추출
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());
	// ...
    }
    // 포토샵 정보
    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 속성을 설정하거나 업데이트하는 많은 setter 메서드가 있습니다. 사용자 지정 XMP 패키지 속성 설정에 고유한 키-값 쌍을 제공할 수도 있습니다.

Java에서 HEIC/HEIF 이미지의 EXIF 및 XMP 메타데이터 제거

각 EXIF 패키지 또는 XMP 패키지를 null로 설정하여 모든 메타데이터 속성을 제거할 수 있습니다.

다음 코드는 HEIC 이미지의 EXIF 데이터를 제거합니다.

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

다음 코드는 HEIC 이미지의 XMP 데이터를 제거합니다.

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

결론

요약하자면 Java의 HEIF/HEIC 이미지에서 EXIF 및 XMP 메타데이터를 추출, 업데이트, 제거하는 방법을 배웠습니다. 또한 이 이미지에서 IFD 및 GPS 정보를 얻는 방법을 살펴보았습니다. 이제 이 정보를 쉽게 얻을 수 있고 GroupDocs.Metadata 앱 제품군과 같은 자체 애플리케이션을 구축하여 메타데이터 정보를 자동화할 수 있습니다.

자세한 정보, 옵션 및 예를 보려면 문서GitHub 저장소를 방문하십시오. 추가 질문은 지원 포럼에서 문의하십시오.

또한보십시오