Python: Convert an image to ASCII art (Source code, Script)


In this blog post, we’ll be learning how to convert images into ASCII art using the Python programming language. Ascii art is a form of art that uses characters from the ASCII standard character set to represent images. These characters can be used to create text-based images, which are sometimes referred to as “text art.”

What is ASCII Art?

ASCII art is a form of artwork that can be created with text characters. The term is also known as “computer text art”. Ascii art can be created with any text editor, and there are a number of sites online that will convert images to ASCII art.

The basis for Ascii art is a line drawing. Usually when creating Ascii art, one uses a fixed-width font such as Courier New. The image is then represented using printable characters from the ASCII character set. Most often, these characters are spaces, newlines, tabs, or punctuation marks. However, some Ascii art also utilizes other printable characters like # or $.

Ascii artists sometimes also use non-printing characters like backspace or delete to create their work. This can be seen in some works that utilize block graphics. These works often make use of the full width of the screen to create their images.

One advantage of Ascii art is that it can be easily embedded into HTML documents since it relies only on printable characters from the ASCII character set.

Another advantage of Ascii art is that it’s relatively easy to create compared to other types of graphic design techniques. All you need is a text editor and a bit of creativity!

Finally, Ascii art is often portable since it doesn’t rely on any external fonts or graphics files.

Converting an image to ASCII art.

To convert an image to ASCII art is to use the Python Imaging Library (PIL). PIL is a library that offers several standard procedures for manipulating images.

pip install pillow

Once the installation is complete, we can import the Image modules from the pillow library.

from PIL import Image dot_char = [" ", "."] def convert(imagefile, new_width=100, threshold=100): image = Image.open(imagefile) width, height = image.size ratio = width / height new_height = int(new_width * ratio) image = image.resize((new_width, new_height)) image = image.convert("L") # converting image to grayscale pixels = image.getdata() # getting data of pixels in the grayscaled image characters = "".join( [" " if pixel < threshold else "." for pixel in pixels] ) pixel_count = len(characters) ascii_image = "\n".join( [ characters[index: index + new_width] for index in range(0, pixel_count, new_width) ] ) return ascii_image """ Example Usage: print(convert("path/to/image")) """
Code language: PHP (php)

Download the source code of this python script here

Pass the path to the image as a parameter to the convert() function to get an ASCII version of the image which can be printed out to be copy-pasted

As you can see, converting images into ASCII art is actually quite simple once you understand how it works. This technique can be used to create all sorts of text-based images, and it’s a great way to add some personal flair to your work. So go ahead and give it a try!

Andy Avery

I really enjoy helping people with their tech problems to make life easier, ​and that’s what I’ve been doing professionally for the past decade.

Recent Posts