코드네임 :

[GUI🐟] 강아지 포토샵🐶✨ 본문

프로그래밍/Python

[GUI🐟] 강아지 포토샵🐶✨

비엔 Vien 2023. 5. 17. 16:19

구이로 강아지 포토샵 만들어보기 !
필터 씌우는 것만 하려다가 코드짜다가 급 재밌어서 여러 색으로 그림그리는 것도 추가함 ㅋㄱㅋㅋㅋㅋ 
 
+ 수정된 코드 ⬇️
 
( 처음 코드에서는 파일 오픈 하기 전에 reset 누르면 에러 뜨길래 아예 open_image 함수 안에 button들 grid 코드 집어넣었음)
https://vien-coding.tistory.com/68
 
근데 코드에 define 너무 많아서 좀,,, 뭔가 정리해주고 싶은데.. 나는 아직 코린이... 일단,, 배운 만큼 쓴 코드다.. 슬프다...
 
+ 그래도 궁금해서 저거 정리할 수 있나 했는데 찾아보니 lambda 함수로 뭔가를 하는 듯..
이런,, 저는 역시 아기코더....
간결한 코드와 설명을 원하신다면 아래 링크로...⬇️
https://vien-coding.tistory.com/69
 (일단 비공개.. 뭔지 작성해야함..)

### 강쥐_포토샵.py
## 강아지 사진을 선택하여 필터 효과를 주거나 사진 위에 그림을 그릴 수 있는 간단한 포토샵

from tkinter import Tk, Canvas, Button, filedialog, Label
from PIL import Image, ImageTk, ImageFilter

window = Tk()
window.title("Puppy Photoshop")

def open_image():
    global img, tk_img
    file_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png *.jpg *.jpeg")])
    if file_path:
        img = Image.open(file_path)
        tk_img = ImageTk.PhotoImage(img)
        c.create_image(400, 250, image=tk_img)
        window.update()

def blur():
    global img, tk_img
    out = img.filter(ImageFilter.BLUR)
    tk_img = ImageTk.PhotoImage(out)
    c.create_image(400, 250, image=tk_img)
    window.update()

def contour():
    global img, tk_img
    out = img.filter(ImageFilter.CONTOUR)
    tk_img = ImageTk.PhotoImage(out)
    c.create_image(400, 250, image=tk_img)
    window.update()

def emboss():
    global img, tk_img
    out = img.filter(ImageFilter.EMBOSS)
    tk_img = ImageTk.PhotoImage(out)
    c.create_image(400, 250, image=tk_img)
    window.update()

def reset():
    global img, tk_img
    tk_img = ImageTk.PhotoImage(img)    
    c.create_image(400, 250, image=tk_img)
    window.update()

def paint(event):
    x1,y1=event.x-2,event.y-2
    x2,y2=event.x+2,event.y+2
    c.create_oval(x1,y1,x2,y2,fill=mycolor,width=0)  

def red():
    global mycolor
    mycolor="crimson"
    
def yellow():
    global mycolor
    mycolor="gold"

def green():
    global mycolor
    mycolor="forestgreen"
    
def blue():
    global mycolor
    mycolor="royalblue"

def black():
    global mycolor
    mycolor="black"


img = None
tk_img = None
c = Canvas(window, width=800, height=500)
c.grid(row=1,columnspan=10)
mycolor="black"
c.bind("<B1-Motion>",paint)


#파일 오픈 버튼 및 필터 버튼
open_button = Button(window, text="Open Image", command=open_image)
open_button.grid(row=2, column=1)

blur_button = Button(window, text="Blur", command=blur)
blur_button.grid(row=2, column=4)

contour_button = Button(window, text="Contour", command=contour)
contour_button.grid(row=2, column=5)

emboss_button = Button(window, text="Emboss", command=emboss)
emboss_button.grid(row=2, column=6)

reset_button = Button(window, text="Reset", command=reset)
reset_button.grid(row=2, column=9)

# 색깔 버튼
redB=Button(window,text="빨강",bg="crimson",fg="white",command=red)
redB.grid(row=4,column=1)

yellowB=Button(window,text="노랑",bg="gold",command=yellow)
yellowB.grid(row=4,column=4)

greenB=Button(window,text="초록",bg="forestgreen",fg="white",command=green)
greenB.grid(row=4,column=5)

blueB=Button(window,text="파랑",bg="royalblue",fg="white",command=blue)
blueB.grid(row=4,column=6)

blackB=Button(window,text="검정",bg="black",fg="white",command=black)
blackB.grid(row=4,column=9)

# 라벨들..
title=Label(window, text="\n✨ 강아지 포토샵 ✨", font=("맑은 고딕", 18))
title.grid(row=0,column=5)

blank1=Label(window, text="    ")
blank1.grid(row=3,column=5)

blank2=Label(window, text="    ")
blank2.grid(row=5,column=5)

window.mainloop()

 

 

좀 더 깔끔한 결과물을 원했지만,, grid로 더 이상 깔끔하게는 불가능 할거 같아서,, 
우선 좀 더 배우고 고치던가 해야할 것 같긴 해서 일단!
그래도 grid로 하는데두 진짜 열심히 중심 맞추고 한거다 ㅎㅁㅎ(근데 지금 보니 버튼 왜 중심 안 맞아...ㅠ)

 

블러 처리 해주면 이렇게 필터 적용도 되고!

 
 
 

그 위에 그림도 그릴 수 있당👩‍🎨🖌️
 
 
 
 

 
Button 색깔 바꿀 때 참고한 곳!.. 근데 몹시 간단했음묭 ㅋ
https://www.delftstack.com/ko/howto/python-tkinter/how-to-change-tkinter-button-color/

 

Tkinter 버튼 색상을 변경하는 방법

이 튜토리얼에서는 Tkinter Button 색상을 설정하는 방법을 소개합니다.

www.delftstack.com

파이썬 색상표~~~🎨
https://matplotlib.org/2.0.2/examples/color/named_colors.html

 

color example code: named_colors.py — Matplotlib 2.0.2 documentation

color example code: named_colors.py (Source code, png, pdf) """ ======================== Visualizing named colors ======================== Simple plot example with the named colors and its visual representation. """ from __future__ import division import m

matplotlib.org

 
+ 혹시 나중에 GUI 까먹으면 보려고..
https://hcr3066.tistory.com/96

 

(python) tkinter을 통한 GUI 프로그래밍3 - tkinter를 이용한 그래픽

캔버스 생성 점, 선, 도형들을 그릴 수 있음 캔버스(Canvas) 위젯을 윈도우 위에 생성한 후, 캔버스에 그림을 그림 그래프를 그리거나 그래픽 에디터를 작성할 수 있고, 많은 종류의 커스텀 위젯을

hcr3066.tistory.com