두근두근 파이썬 CH10 연습문제Language/Python2021. 6. 22. 19:50
Table of Contents
1번.
import tkinter as tk
from PIL import Image , ImageTk, ImageFilter
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) #tk형식에 바꾸어 파일 변환
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) #45회전
tk_img = ImageTk.PhotoImage(out)
canvas.create_image(250,250,image= tk_img)
window.update()
def image_blur():
global im, tk_img
out1 = im.filter(ImageFilter.BLUR) #filter 클래스 이용하여 이미지 흐리
tk_img = ImageTk.PhotoImage(out1)
canvas.create_image(250,250,image= tk_img)
window.update()
window = tk.Tk()
canvas = tk.Canvas(window , width=500 , height=500)
canvas.pack()
#Menu()를 사용하여 윈도우 안에 메뉴를 생성한다.
menubar = tk.Menu(window)
#메뉴바안에 "파일" 메뉴를 생성한다.
filemenu =tk.Menu(menubar)
#메뉴바안에 "ipmenu" 메뉴를 생성한다.
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)
#파일 메뉴를 누르면 아래로 다른 메뉴가 확장이 되도록한다.
menubar.add_cascade(label = "파일",menu = filemenu)
menubar.add_cascade(label = "영상처리", menu = ipmenu)
window.config(menu = menubar)
window.mainloop()
2번.
from PIL import ImageTk, Image
img = Image.open("image1.gif")
grayscale = img.convert("L") #img.convert(mode)
grayscale.show() #img.convert("L"):흑백모드
3번.
import tkinter as tk
from PIL import Image , ImageTk
img= None #사용할 변수들 선언
tk_img=None
area =()
def save():
global img
img.save("test1.jpeg","jpeg") #이미지 저장 파일명, 형식
def cut():
global img , tk_img , area
x_start = int(input("자를 x좌표 시작점:"))
y_start = int(input("자를 y좌표 시작점:"))
x_range = int(input("자를 x좌표 범위:"))
y_range = int(input("자를 y좌표 범위:"))
area = (x_start,y_start,x_range,y_range)
#튜플 형식으로 사용
img= img.crop((area)) #crop 클래스 이용하여 잘라낸다.
tk_img = ImageTk.PhotoImage(img)
canvas.create_image(250,250,image=tk_img)
window.update()
def resize():
global img , tk_img
size_x = int(input("x축 사이즈는 어떻게 할까요 ?"))
size_y = int(input("y축 사이즈는 어떻게 할까요? "))
img = img.resize((size_x,size_y))#resize클래스 사용하여 이미지 크기변환
tk_img = ImageTk.PhotoImage(img)
canvas.create_image(250,250,image=tk_img)
window.update()
window = tk.Tk()
canvas = tk.Canvas(window , width=500 , height= 500)
canvas.pack()
img = Image.open("image1.gif")
tk_img =ImageTk.PhotoImage(img)
canvas.create_image(250,250,image=tk_img)
window.update()
#문제 1번과 동일한 과정
menubar = tk.Menu(window)
filemenu = tk.Menu(menubar)
ipmenu = tk.Menu(menubar)
filemenu.add_command(label="저장",command=save)
ipmenu.add_command(label="잘라내기",command=cut)
ipmenu.add_command(label="리사이즈",command=resize)
menubar.add_cascade(label="파일",menu = filemenu)
menubar.add_cascade(label="영상처리",menu = ipmenu)
window.config(menu = menubar)
window.mainloop()
'Language > Python' 카테고리의 다른 글
리스트,튜플,딕셔너리,셋 (0) | 2021.06.23 |
---|---|
두근두근 파이썬 CH11 연습문제 (0) | 2021.06.22 |
두근두근 파이썬 CH9 연습문제 (0) | 2021.06.22 |
두근두근 파이썬 CH8 연습문제 (0) | 2021.06.22 |
두근두근 파이썬 CH7 연습문제 (0) | 2021.06.22 |
@Return :: Return
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!