[파이썬] Pillow XIF 데이터 추출 및 수정

이번 블로그에서는 Python의 Pillow 패키지를 사용하여 XIF(Exchangeable Image File Format) 데이터를 추출하고 수정하는 방법에 대해 알아보겠습니다. Pillow는 Python에서 이미지 처리 작업을 수행하는 강력한 라이브러리로, XIF 데이터를 읽거나 쓸 수 있는 기능을 제공합니다.

XIF란?

XIF는 디지털 카메라뿐만 아니라 다양한 디지털 영상 장치에 의해 생성된 이미지 파일에서 메타데이터를 저장하는 데 사용되는 포맷입니다. 이 메타데이터에는 촬영일시, 촬영장소, 카메라 모델 등의 정보가 포함되어 있습니다. XIF 데이터를 추출하고 수정함으로써 이미지에 관련 정보를 추가하거나 수정할 수 있습니다.

Pillow 설치

Pillow를 사용하기 위해서는 먼저 Pillow 패키지를 설치해야 합니다. 다음 명령을 사용하여 Pillow를 설치할 수 있습니다.

pip install pillow

XIF 데이터 추출

다음은 Pillow를 사용하여 XIF 데이터를 추출하는 간단한 예제 코드입니다.

from PIL import Image

image = Image.open("image.jpg")
xif_data = image.info.get("exif")

위 코드에서 image.jpg는 XIF 데이터를 추출하고자 하는 이미지 파일의 경로입니다. Image.open() 함수를 사용하여 이미지를 열고, image.info.get("exif")를 통해 XIF 데이터를 추출합니다. 추출된 XIF 데이터는 xif_data 변수에 저장됩니다.

XIF 데이터 수정

다음은 Pillow를 사용하여 XIF 데이터를 수정하는 예제 코드입니다.

from PIL import Image, ExifTags

image = Image.open("image.jpg")
exif_dict = image._getexif()

if exif_dict is not None:
    for tag, value in exif_dict.items():
        tag_name = ExifTags.TAGS.get(tag)
        
        if tag_name == "DateTimeOriginal":
            new_value = "2022:01:01 12:00:00"  # 새로운 값으로 수정
            exif_dict[tag] = new_value

image.save("modified_image.jpg", exif=exif_dict)

위 코드에서 image.jpg는 XIF 데이터를 수정하고자 하는 이미지 파일의 경로입니다. Image.open() 함수를 사용하여 이미지를 열고, _getexif()를 통해 XIF 데이터를 가져옵니다. 가져온 XIF 데이터는 exif_dict 변수에 저장됩니다.

exif_dict를 순회하면서 필요한 태그(DateTimeOriginal 등)을 찾아 새로운 값으로 수정할 수 있습니다. 수정된 XIF 데이터는 image.save() 메서드를 사용하여 이미지 파일에 저장됩니다. 이때 exif 매개변수에 수정된 XIF 데이터를 전달합니다.

결론

Pillow를 사용하여 XIF 데이터를 추출하고 수정하는 방법에 대해 알아보았습니다. 이미지 파일에 포함된 메타데이터를 활용하여 추가 정보를 제공하거나 수정할 수 있습니다. Pillow는 XIF 데이터뿐만 아니라 다른 메타데이터에 대한 처리를 지원하므로, 다양한 이미지 처리 작업에 유용하게 사용할 수 있는 라이브러리입니다.