터틀 그래픽

가을 이미지 파일

가을 이미지

main.py


from turtle import Turtle, Screen
import random
import colorgram


# 삼각형에서 12각형까지 그리는 함수
def draw_shape(angle, direction):
    if direction == "right" :
        while angle != 12:
            tt.pencolor(random.randint(1, 255), random.randint(1, 255), random.randint(1, 255))
            for _ in range(angle):
                tt.forward(100)
                tt.right(round(360/angle,1))
            angle += 1
    else:
        while angle != 12:
            tt.pencolor(random.randint(1, 255), random.randint(1, 255), random.randint(1, 255))
            for _ in range(angle):
                tt.forward(100)
                tt.left(round(360/angle,1))
            angle += 1
    return

# 랜덤 색깔 추출 함수
def random_color():
    red = random.randint(1, 255)
    green = random.randint(1, 255)
    blue = random.randint(1, 255)

    random_colors = (red, green, blue)
    return random_colors

# 랜덤 각도로 선 그리기 함수
def random_draw(angle):
    while True :
        tt.pencolor(random_color())
        num = random.randint(1, 3)
        if num == 1 :
            tt.right(num*angle)
            tt.forward(20)
        elif num == 2:
            tt.left(num*angle)
            tt.forward(20)
        else:
            tt.forward(20)
    return

# 일정한 각도로 원 그리기
def draw_circle(num, radius):
    for _ in range(num):
        tt.pencolor(random_color())
        tt.circle(radius)
        tt.left(int(360/num))

# 색상 추출 함수(가을 이미지에서 색상 추출)
def extract_color():
    rgb_colors=[]
    # colors = colorgram.extract('python_Exercise/project/project17_TurtleGraphic/image.jpg', 30)
    colors = colorgram.extract('python_Exercise/project/project17_TurtleGraphic/autumn.jpg', 30)

    for color in colors:
        r = color.rgb.r
        g = color.rgb.g
        b = color.rgb.b

        rgb_color = (r, g, b)
        rgb_colors.append(rgb_color)

    return rgb_colors

# 추출된 색상을 이용하여 점 그림 그리기
def print_dot():
    rgb_colors = extract_color()

    for i in range(20):
        tt.penup()
        tt.goto(-300, -300+(i*30))
        for _ in range(15):

            tt.pendown()
            tt.dot(20, random.choice(rgb_colors))
            tt.penup()
            tt.forward(40)

    tt.penup()
    return

tt = Turtle()
tt.shape("circle")
tt.speed("fastest")
tt.hideturtle()
screen = Screen()
screen.colormode(255)

# 점선 사각형 그리기
# for _ in range(4):
#     for _ in range(10):
#         tt.forward(10)
#         tt.penup()
#         tt.forward(10)
#         tt.pendown()
#     tt.left(90)

# 정삼각형, 정사각형, 정오각형, 정육각형 등 도형 그리기

# draw_shape(3,"right")
# draw_shape(3,"left")

# 랜덤 방향으로 회전하며 그려 나가기
# tt.pensize(5)
# random_draw(40)

# 여러개 원 그리기
# draw_circle(50, 100)

# 이미지로 색상을 추출하여 점 그리기
print_dot()
# 창의 클릭하면 종료
screen.exitonclick()

가을 이미지에서 색상을 추출하여 도트 이미지로 출력하기 결과물(허스트 스팟 페인팅)

결과물