이번 포스팅에서는 파이썬(Python) 패키지 imageio를 이용하여 여러 이미지를 합쳐서 gif 파일로 만들어보는 방법을 소개하려고 한다.
imageio로 gif 파일 만들기
1) imageio 설치
imageio가 없다면 설치를 해줘야 한다. 아래 코드를 복사해서 설치하면 된다.
pip install imageio
2) gif 파일 만들기
a. 이미지 생성
먼저 이미지 파일을 만들어 준다. 나는 아래와 같은 수평선을 조금씩 위로 올라가는 장면을 gif로 저장하려고 한다.
아래 코드는 images 폴더에 총 9장의 이미지를 저장한다.
import os
import matplotlib.pyplot as plt
image_dir = './images'
if os.path.exists(image_dir):
pass
else:
os.makedirs(image_dir)
for i in range(1, 10):
fig = plt.figure()
fig.set_facecolor('white')
ax = fig.add_subplot()
ax.set_ylim((0, 10))
ax.axhline(i, linestyle='--')
plt.savefig(os.path.join(image_dir, f'{i}.png'), dpi=150)
위 코드를 실행하면 해당 폴더에 이미지가 생성된 것을 알 수 있다.
b. gif 파일 만들기
imageio의 mimwrite(또는 mimsave)를 사용하면 여러 이미지를 하나로 합쳐서 gif를 만들 수 있다.
방법은 간단하다. 첫 번째 인자에는 gif 저장 경로, 두 번째 인자는 gif로 만들 여러 이미지를 담은 리스트 그리고 format 인자에는 gif로 설정한다. 이때 재생 반복 수(loop)나 이미지 간 넘어가는 시간(duration) 등 부가적인 요소를 설정하여 딕셔너리로 넘겨줄 수 있다. 딕셔너리에 설정해 줄 수 있는 요소가 무엇인지는 여기를 참고하면 된다.
import imageio
gif_config = {
'loop':0, ## 0으로 세팅하면 무한 반복, 3으로 설정하면 3번 반복
'duration': 0.5 ## 다음 화면으로 넘어가는 시간
}
## gif로 만들 이미지를 리스트로 만들어 줌
images = [plt.imread(os.path.join(image_dir, x)) for x in os.listdir(image_dir)]
## mimwrite 대신 mimsave로도 가능
imageio.mimwrite(os.path.join(image_dir, 'result.gif'), ## 저장 경로
images, ## 이미지 리스트
format='gif', ## 저장 포맷
**gif_config ## 부가 요소
)
위 코드를 실행하고 해당 폴더로 들어가면 아래와 같은 gif 파일이 만들어진 것을 알 수 있다.
'프로그래밍 > 기타 Python 모듈' 카테고리의 다른 글
[오류 해결] Pyinstaller : ValueError: not enough values to unpack (expected 2, got 1) (1) | 2023.03.17 |
---|---|
[shap] SHAP Value 계산 및 시각화 결과 해석하기 with Python (2) | 2023.01.23 |
[XGBoost] XGBoost 모형 학습하기 (feat. XGBClassifier, XGBRegressor) (0) | 2022.11.05 |
[Jupyter Notebook] 주피터 노트북 크롬(Chrome)으로 바로 실행하기 (2) | 2022.10.21 |
주피터 노트북( Jupyter Notebook ) 배경 테마, 폰트, 셀 폭( Cell Width ) 설정하기 (2) | 2022.09.21 |
댓글