Paint.net-like-with-Tkinter

Paint.net-like-with-Tkinter

Python, Tkinter, Opencv2 and Pillow를 사용해 Paint.net(Photo Shop같은 사진 편집프로그램)을 모방하였습니다.

Patchlog

v1.0: Release
V1.1: 코드 최적화
v1.2: Visual Studio Code icon image 상대경로 패치

개발 환경(Development Environment)

에디터(Editor) : Visual Studio Code 언어(Language) : Python 모듈(Module) : tkinter, tkinter.filedialog, tkinter.simpledialog, tkinter.font, tkinter.ttk, tkinter.colorchooser, numpy, cv2, PIL(Image, ImageOps , ImageGrab), time

Icon 출처(Icon Source)

paint.net documentation
https://www.getpaint.net/doc/latest/index.html

구동 모습

paint.net-like

구현된 기능

캔버스 도구(Canvas Tool)

canvas tool


선택(Selection)

tkinter toplevel창을 이용해 이미지에서 선택 영역 표시하는 기능

이동(Move)

tkinter toplevel창을 움직인 곳에 선택한 이미지 잘라서 붙이는 기능

확대(Zoom)

캔버스 위의 한점을 클릭하면 그 주변을 확대해서 보여주는 기능

붓질(Brush)

붓의 느낌을 살려 캔버스 위에 마우스 포인터가 움직이는 대로 그리는 기능

지우개(Eraser)

기본색인 하얀색으로 마우스 포인터가 움직이는 대로 덧칠하는 기능

펜(Pen)

펜의 느낌을 살려 캔버스 위에 마우스 포인터가 움직이는 대로 그리는 기능

색상 선택 도구(Color Picker)

캔버스위의 한 점을 클릭하면 그 점의 색상 정보를 세부 도구창에 띄우고 색상2에다가 할당하는 기능

글 입력(Text)

캔버스위의 한 점을 클릭하면 텍스트를 입력하고, 폰트, 글씨 크기를 선택하는 창을 띄우고 그 점을 기준으로 글을 삽입하는 기능

선 그리기(Line)

캔버스 위의 한 점을 클릭하고 떼면 그걸 기준으로 직선을 그려주는 기능

도형(Square, Circle, Triangle)

캔버스 위의 한점을 클릭하고 떼면 그걸 기준으로 사각형, 원, 삼각형을 그려주는 기능


이미지 보정(Image Adjustment)

image adjustment


밝기와 대비(Brightness & Contrast)

이미지 밝기(0~255)와 대비(1.0~3.0) 조정

색상, 채도, 명도(HSV)

색상(0~180), 채도(0~200), 명도(-100~100) 조정

포스터 효과(Posterization)

사용가능한 색상수(1~255)를 조정하여 포스터 이미지 같은 느낌을 주게 보정

색반전(Inverted Color)

255에서 해당 RGB값을 빼서 색을 반전 시키게 보정

세피아 효과(Sepia)

이미지를 세피아 톤으로 보정

흑백 효과(Black & White)

이미지를 흑백 톤으로 보정


ETC

이미지 확대/축소

전체 이미지 0~4사이로 확대/축소

이미지 회전(Rotate Image)

이미지 회전 (0~360)

이미지 대칭(Flip Image)

이미지 상하대칭, 좌우대칭