본문 바로가기
프로그램/Python 1000제

Python 326제] 두근두근 파이썬(개정판) CHAPTER 12 도전문제 1 p377

by 건티 2024. 10. 21.
728x90

출처 : 반크_독도2023

 

참고풀이]

from PIL import Image, ImageTk, ImageFilter  
import tkinter as tk
from tkinter import filedialog as fd

im = None
tk_img = None

# 파일 메뉴에서 “열기”를 선택하였을 때 호출되는 함수
def open():
    global im, tk_img
    fname = fd.askopenfilename()
    im = Image.open(fname)
    tk_img = ImageTk.PhotoImage(im)
    canvas.create_image(250, 250, image=tk_img)
    window.update()

# 파일 메뉴에서 “종료”를 선택하였을 때 호출되는 함수
def quit():
    window.quit()

# 영상처리 메뉴에서 “영상회전”을 선택하였을 때 호출되는 함수
def image_rotate():
    global im, tk_img
    out = im.rotate(45) 
    tk_img = ImageTk.PhotoImage(out)
    canvas.create_image(250, 250, image=tk_img)
    window.update()

# 영상처리 메뉴에서 “영상흐리게”를 선택하였을 때 호출되는 함수
def image_blur():
    global im, tk_img
    out = im.filter(ImageFilter.BLUR)
    tk_img = ImageTk.PhotoImage(out)
    canvas.create_image(250, 250, image=tk_img)
    window.update()

# 영상처리 메뉴에서 “영상을 흑백으로”를 선택하였을 때 호출되는 함수
def image_blackNwhite():
    global im, tk_img
    out = im.convert("L")
    tk_img = ImageTk.PhotoImage(out)
    canvas.create_image(250, 250, image=tk_img)
    window.update()

# 윈도우를 생성한다. 
window = tk.Tk()
canvas = tk.Canvas(window, width=500, height=500)
canvas.pack()

# 메뉴를 생성한다. 
menubar = tk.Menu(window)
filemenu = tk.Menu(menubar)
ipmenu = tk.Menu(menubar)
filemenu.add_command(label="열기", command=open)
filemenu.add_command(label="종료", command=quit)
ipmenu.add_command(label="영상회전", command=image_rotate)
ipmenu.add_command(label="영상흐리게", command=image_blur)
ipmenu.add_command(label="영상을 흑백으로", command=image_blackNwhite)
menubar.add_cascade(label="파일", menu=filemenu)
menubar.add_cascade(label="영상처리", menu=ipmenu)

window.config(menu=menubar)
window.mainloop()

 

참고풀이 결과]

시작화면)

 

이미지 열기)

 

영상회전)

 

영상흐리게)

 

영상을 흑백으로)

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 가을

 

 

 

반응형

댓글