Stokry
Posted on May 4, 2021
Hello all, in today's quick tutorial I will show you a small Python script that converts image files into beautiful ASCII art.
This is our test image:
First we need to import our dependencies:
import sys
from PIL import Image
from termcolor import colored
import colorama
First we need to read our image:
colorama.init()
try:
image_path = sys.argv[1].strip('-')
except:
image_path = input('test1.jpg')
then we will be converting it into grayscale
class AsciiArt:
def __init__(self, img_path):
self.path = image_path
self.img = Image.open(self.path)
def image(self):
after that, we resize the image:
width, height = self.img.size
aspect_ratio = height/width
new_width = 120
new_height = aspect_ratio * new_width * 0.55
img = self.img.resize((new_width, int(new_height)))
new size of image, and we convert image to greyscale format
img = img.convert('L')
pixels = img.getdata()
replace each pixel with a character from array
chars = ["B", "S", "#", "&", "@", "$", "%", "*", "!", ":", "."]
new_pixels = [chars[pixel//25] for pixel in pixels]
new_pixels = ''.join(new_pixels)
split string of chars into multiple strings of length equal to new width and create a list
new_pixels_count = len(new_pixels)
ascii_image = [new_pixels[index:index + new_width]
for index in range(0, new_pixels_count, new_width)]
ascii_image = "\n".join(ascii_image)
print(ascii_image)
write to a text file.
file = "ascii_image.txt"
with open(file, "w") as f:
f.write(ascii_image)
print(colored(f"saved art image to file as {file}", "yellow"))
Last step:
if __name__ == "__main__":
AsciiArt(image_path).image()
Thank you all.
💖 💪 🙅 🚩
Stokry
Posted on May 4, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
python Customizing the origin of our geometric visualizations using Python and Spyrograph
April 10, 2023