Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 그래프를 PIL 이미지 객체로 변환하는 방법

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()를 호출하여 버퍼를 정리하는 것이 좋습니다.

출력 결과

Matplotlib 그래프를 PIL 이미지 객체로 변환하는 방법Matplotlib 그래프를 PIL 이미지 객체로 변환하는 방법