이미지는 어떤 애플리케이션에서든 매우 유용하게 활용되는 요소입니다. 파이썬에서는 Pillow(PIL) 패키지를 사용하면 Tkinter 애플리케이션에서도 이미지를 손쉽게 처리할 수 있습니다. Pillow는 이미지 불러오기, 변환, 크기 조정 등 다양한 내장 기능을 제공하기 때문에 GUI 프로그램에서 이미지를 다룰 때 가장 널리 쓰이는 라이브러리 중 하나입니다.
Pillow가 설치되어 있지 않다면 아래 명령어로 먼저 설치할 수 있습니다.
pip install pillow
예제 코드
다음 예제에서는 사용자가 파일 대화상자를 통해 이미지를 직접 선택하면, 그 이미지를 Label 위젯을 사용해 화면에 표시하는 방법을 살펴보겠습니다.
#Tkinter 라이브러리 임포트
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from PIL import Image, ImageTk
#Tkinter 프레임 인스턴스 생성
win= Tk()
#창 크기 및 제목 설정
win.geometry("750x350")
win.title("Image Gallery")
def select_file():
path= filedialog.askopenfilename(title="Select an Image", filetype=(('image files','*.jpg'),('all files','*.*')))
img= Image.open(path)
img=ImageTk.PhotoImage(img)
label= Label(win, image= img)
label.image= img
label.pack()
#안내 문구와 버튼 생성
Label(win, text="Click the Button below to select an Image", font=('Caveat 15 bold')).pack(pady=20)
button= ttk.Button(win, text="Select to Open", command= select_file)
button.pack(ipadx=5, pady=15)
win.mainloop()코드 설명
filedialog.askopenfilename(): 파일 탐색 대화상자를 열어 사용자가 이미지 파일을 선택할 수 있게 합니다.Image.open(path): 선택된 경로의 이미지를 Pillow로 불러옵니다.ImageTk.PhotoImage(img): Pillow 이미지를 Tkinter에서 표시 가능한 형태로 변환합니다.label.image = img: 이미지 객체에 대한 참조를 유지하지 않으면 가비지 컬렉션으로 인해 이미지가 사라질 수 있으므로 반드시 저장해야 합니다.
실행 결과
위 코드를 실행하면 이미지 파일을 선택할 수 있는 버튼이 포함된 창이 화면에 나타납니다.

버튼을 클릭한 후 로컬 디렉터리에서 원하는 이미지를 선택하면, 해당 이미지가 즉시 창에 표시됩니다.
