2022. 3. 19. 01:17ㆍIT
우리가 가지고 있는 디지털 카메라로 찍은 사진에는 다양한 정보를 가지고 있다. 예를 들자면 사진을 찍은 날짜, 시간, 사진을 찍은 곳의 위도 경도, 카메라 정보, 셔터 스피드, 조리개 값 등의 정보를 가지고 있다. 이것을 Exchangeable Image file Format, EXIF라고 한다.
내가 카메라를 또는 스마트폰을 가지고 찍은 다양한 사진을 화면에 보여줄 것인데 사진을 찍은 날짜를 같이 보여줄 수 있다면 좋겠다. 사진을 보고 언제 어디서 찍은 사진인지 알면 좋겠기에 우선은 사진이 찍힌 날짜를 뽑아내보고자 한다. 카메라에 따라서는 위치값도 찾을 수는 있지만 내가 가지고 있는 카메라는 위치를 저장하는 GPS 모듈이 없는 카메라여서 위치값이 저장되어 있지 않다. 스마트 폰으로 찍은 사진은 위치 정보도 가지고 있어서 어디서 찍은 사진인지까지도 찾아 낼 수 있지만 말이다.
import exifread
with open("CRW_3550.jpg", "rb") as f:
tags = exifread.process_file(f)
print(tags)
print(tags["EXIF DateTimeDigitized"])
위와 같이 두 가지 방법을 찾았다. 하나는 exifread라는 라이브러리를 사용하는 것이고 또 다른 하나는 ExifTags라는 PIL에 있는 라이브러리를 사용하는 방법이다.
exifread를 사용해서 print(tags)를 통해서 사진이 가지고 있는 모든 exif 정보를 출력해 볼 수 있고, 출력된 정보 중에서 작은 따옴표('') 사이에 있는 정보만 출력하기 위해서는 다음과 같이 출력하고자 하는 정보만 취득을 할 수 있다.
print(tags["EXIF DateTimeDigitized"])
PIL내의 ExifTags는 key 값을 이용해서 원하는 값을 찾을 수 있는데 datetime은 키 값이 0x0132이다. Pycharm에서 ExifTags.TAGS에서 TAGS에 커서를 위치시키고 키보드의 Ctrl + B, 맥에서는 Command + B를 누르면 다양한 key 값들을 찾아 볼 수 있다. 너무나 다양한 정보들을 EXIF에 담을 수 있다는 것을 여기서 볼 수 있다.
from PIL import Image, ExifTags
img = Image.open("CRW_3550.jpg")
img_exif = img.getexif()
if img_exif is None:
print('Sorry, image has no exif data.')
else:
for key, val in img_exif.items():
if key in ExifTags.TAGS:
print(f'{ExifTags.TAGS[key]}:{val}')
if key == 0x0132:
print(f'{ExifTags.TAGS[key]}:{val}')
'IT' 카테고리의 다른 글
#5 전자액자 프로젝트 - 따라하기 (0) | 2022.03.21 |
---|---|
#4 전자액자 프로젝트 - 랜덤 파일 액세스 (0) | 2022.03.19 |
#2 전자액자 프로젝트 - 사진보이기 (0) | 2022.03.19 |
#1 전자액자 프로젝트 - 시작 / 슬라이드 쇼 (0) | 2022.03.18 |
파이썬 디컴파일 (python de-compile) (0) | 2022.03.18 |