파이썬의 Pillow 라이브러리는 이미지 처리에 필요한 기본적인 기능을 모두 갖추고 있습니다. 오픈소스로 공개된 이 라이브러리는 다양한 형식의 이미지를 불러오고, 편집하고, 조작할 수 있도록 지원합니다.
이 글에서는 간단한 예제를 통해 Pillow 패키지(PIL)를 사용하여 Tkinter 캔버스(Canvas) 위젯에 이미지를 삽입하는 방법을 살펴보겠습니다.
구현 단계
다음 순서대로 진행하면 됩니다.
- 필요한 라이브러리를 임포트하고 tkinter 프레임의 인스턴스를 생성합니다.
root.geometry()메서드로 프레임의 크기를 설정합니다.Canvas()함수로 캔버스 위젯을 만들고 width(너비)와 height(높이)를 지정합니다.Image.open()으로 이미지 파일을 연 뒤, ImageTk.PhotoImage()를 사용해 PIL 이미지 객체로 변환합니다. 변환된 이미지는 변수 img에 저장합니다.- canvas.create_image() 메서드를 호출하여 캔버스에 이미지를 추가합니다.
- 마지막으로 애플리케이션 창의 mainloop를 실행합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from PIL import Image, ImageTk
# tkinter 프레임 인스턴스 생성
root = Tk()
# 프레임 크기 설정
root.geometry("700x450")
# 캔버스 위젯 생성
canvas = Canvas(root, width=600, height=400)
canvas.pack()
# 이미지 불러오기
img = ImageTk.PhotoImage(Image.open("camels.jpg"))
# 캔버스에 이미지 추가
canvas.create_image(250, 250, anchor=CENTER, image=img)
root.mainloop()실행 결과
위 코드를 실행하면 다음과 같은 출력 창이 나타납니다. 캔버스 중앙(좌표 250, 250)을 기준으로 지정한 이미지가 표시되는 것을 확인할 수 있습니다.

참고 사항
- Pillow가 설치되어 있지 않다면
pip install pillow명령어로 먼저 설치해야 합니다. ImageTk.PhotoImage객체는 반드시 전역 변수나 다른 방식으로 참조를 유지해야 합니다. 그렇지 않으면 가비지 컬렉션에 의해 이미지가 사라질 수 있습니다.anchor=CENTER옵션은 지정한 좌표를 이미지의 중심으로 삼아 배치한다는 의미입니다. 기본값은NW(왼쪽 상단 기준)입니다.