Drawing the Hirst spot painting with python

You might have heard of the famous Damien Hirst spot paintings that sold for a huge amount of money, what if you could make them using Python on your local machine.

Requirements

You need to have Python installed in your machine, an IDE(Integrated Development Environment) such as Pycharm or the default IDE that comes with Python. You can install Python for your operating system from python.org and pycharm IDE from PyCharm: the Python IDE for Professional Developers by JetBrains

Basic knowledge of python

The modules need are turtle, random and colorgram

turtle and random are preinstalled while you can install colorgram by running this command pip install colorgram.py in your command line

What are the modules used for?

Turtle is a python GUI(graphical user interface), for more details and how to use, visit the python turtle page at [turtle — Turtle graphics — Python 3.11.4 documentation]

Random is a python module that can be used to pick randomly from a range of numbers, integer, list etc. Read more on Python | Random Module | Codecademy

colorgram is a python module that is used to extract colors from an image in rgb or hsl format. visit colorgram.py · PyPI for documentation

Writing the code

Open up the IDE of your choice

import turtle, random, and colorgram

import turtle 
import colorgram
import random

set up the turtle and screen object

# create a turtle object
tim = turtle.Turtle()
# create  the turtle screen
screen = turtle.Screen()

The .exitonclick() Screen method will be called to prevent the screen from disappearing before we get to see what is going on.

# all your code should be written above this method call
screen.exitonclick()

The turtle object will be given some functionalities to suit the project we are building

# This will increase the speed of the turtle as it moves 
tim.speed('fastest')
# the turtle object should an arrowhead like shape on screen, and the method below will hide it.
tim.hideturtle()
# the turtle's default position is the middle of the wind, w'll move it to the bottom left corner of the window
tim.setheading(225)
tim.forward(320)
# set the direction to right
tim.setheading(0)
# This is going to prevent the turtle from leaving traces as it draws the spot painting
tim.penup()
# changes the default colormode to 255
screen.colormode(255)

The next step is getting the needed colors for the project, to this effect we will extract the colors in any of the damien hirst paintings to make ours, you can download any hirst image for this purpose

# this extracts 20 colors from the image and return a list of colorgram objects
colors = colorgram.extract('image path', 20)
list_of_colors = []
rgb = []
# This loops through the object list to get all the rgb color numbers
for color in colors:
    r = color.rgb.r
    b = color.rgb.b
    g = color.rgb.g
    new_color = (r, g, b)
    list_of_colors.append(new_color)

Finally we are going to draw our hirst painting .

# this variable holds the number of dots in our painting
no_of_dots = 100

# for the number of the dots
for dot_count in range(1, no_of_dots+1):
# draw a dot of size 40, and pick a random color from the list of extracted colors
    tim.dot(40, random.choice(list_of_colors))
#  move it right by 60 pixels
    tim.forward(60)
# for every 10 dots, turn the turtle and start all over.
    if dot_count % 10 == 0:
        tim.left(90)
        tim.forward(50)
        tim.left(90)
        tim.forward(590)
        tim.setheading(0)

Conclusion

Hope you enjoyed building this with me, thanks for following true.

I would love to hear from you.