HEIC(고효율 이미지 컨테이너)는 고효율 이미지 형식 HEIF 이미지를 포함할 수 있는 컨테이너입니다. XMP는 메타데이터 속성을 이름/값 쌍으로 저장할 수 있는 XML 기반 메타데이터 표준입니다. 그러나 EXIF(Exchangeable Image File Format)는 표준이며 가장 일반적인 이미지 및 오디오 형식으로 메타데이터 속성을 저장하는 방법을 정의합니다. 이 기사에서는 .NET 애플리케이션 내에서 C#을 사용하여 HEIF/HEIC 이미지의 XMP 및 EXIP 메타데이터를 추출, 업데이트 및 제거하는 방법을 배웁니다.

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

XMP 및 EXIF 메타데이터용 .NET API

GroupDocs.Metadata는 .NET 애플리케이션 내에서 메타데이터 관리를 자동화하는 .NET API를 제공합니다. API를 사용하면 다양한 파일 형식에 대한 메타데이터를 읽고, 업데이트하고, 추가하고, 정리/제거하고, 트래버스할 수 있습니다. API는 EXIF, IPTC 및 XMP와 같은 다양한 메타데이터 표준을 지원합니다. 메타데이터 조작을 위해 지원되는 파일 형식의 전체 목록에 대한 문서를 방문할 수도 있습니다.

다운로드 섹션에서 DLL 또는 MSI 설치 프로그램을 다운로드하거나 NuGet을 통해 .NET 애플리케이션에 API를 설치할 수 있습니다.

PM> Install-Package GroupDocs.Metadata

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

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

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

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

// C#에서 HEIF/HEIC 이미지의 EXIF, EXIF IFD, EXIF GPS 패키지 읽기
using (Metadata metadata = new Metadata(@"image.heic"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        const string pattern = "{0} = {1}";

        foreach (TiffTag tag in root.ExifPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }
    }
}

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

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

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

다음 소스 코드는 C#에서 XMP 기본, DCMI 및 Photoshop 정보를 가져오는 방법을 보여줍니다.

// C#에서 HEIC 및 HEIF 이미지의 XMP Basic, DublinCore 및 Photoshop 데이터 추출
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        if (root.XmpPackage.Schemes.XmpBasic != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
            // ...
        }
        if (root.XmpPackage.Schemes.DublinCore != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
            // ...
        }
        if (root.XmpPackage.Schemes.Photoshop != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
            // ... 
        }
        // ...
    }
}

마찬가지로 다른 XMP 속성을 설정하거나 업데이트하는 많은 setter 메서드가 있습니다. 사용자 지정 XMP 패키지 속성을 설정하기 위해 고유한 키-값 쌍을 제공할 수도 있습니다.

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

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

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

using (Metadata metadata = new Metadata("image.heic"))
{
	IExif root = metadata.GetRootPackage() as IExif;
	if (root != null)
	{
		root.ExifPackage = null;
		metadata.Save("no-exif-image.heic");
	}
}

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

using (Metadata metadata = new Metadata("image.heic"))
{
	IXmp root = metadata.GetRootPackage() as IXmp;
	if (root != null)
	{
		root.XmpPackage = null;
		metadata.Save("no-xmp-image.heic");
	}
}

무료 API 라이선스 받기

평가 제한 없이 API를 사용하기 위해 임시 무료 라이선스 받기를 할 수 있습니다.

결론

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

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

또한보십시오