Matplotlib으로 그린 그래프(figure)를 PIL(Pillow) 이미지 객체로 변환하려면, 그림을 메모리 버퍼에 저장한 뒤 이를 PIL로 여는 방식을 사용합니다. 아래 단계를 따라 진행할 수 있습니다.
변환 절차
- 그림 크기(figsize)를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- 새로운 figure를 생성하거나 기존 figure를 활성화합니다.
- plot() 메서드를 사용해 데이터를 그립니다.
- 메모리 내 버퍼(BytesIO)를 초기화합니다.
- 버퍼에 이미지를 저장합니다.
- PIL의 Image.open()으로 이미지 객체를 생성합니다.
- 현재 이미지를 화면에 표시합니다.
- 사용이 끝난 메모리 I/O 버퍼를 닫아 리소스를 해제합니다.
예제 코드
import io from PIL import Image import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True plt.figure() plt.plot([1, 2]) img_buf = io.BytesIO() plt.savefig(img_buf, format='png') im = Image.open(img_buf) im.show(title="My Image") img_buf.close()
코드 설명
io.BytesIO()는 디스크에 파일을 쓰지 않고 메모리상에서 바이너리 데이터를 다룰 수 있게 해주는 버퍼입니다. plt.savefig()로 그림을 PNG 형식으로 버퍼에 저장한 후, Image.open()에 버퍼를 전달하면 PIL 이미지 객체가 생성됩니다. 마지막에는 close()를 호출하여 버퍼를 정리하는 것이 좋습니다.
출력 결과

