hhl_ASCIIart/demo.py
2023-11-10 08:27:25 +08:00

53 lines
1.3 KiB
Python

import PIL.Image
ASCII_CHARS = ["@", "#", "$", "%", "?", "*", "+", ";", ":", ",", "."]
def resize(image, new_width=200):
width, height = image.size
new_height = new_width * height // width
return image.resize((new_width, new_height))
def to_greyscale(image):
return image.convert("L")
def pixel_to_ascii(image):
pixels = image.getdata()
ascii_str = ""
for pixel in pixels:
ascii_str += ASCII_CHARS[pixel // 25]
return ascii_str
def main():
# path = input("Enter the path to the image fiel : \n")
path = "demo.jpg"
try:
image = PIL.Image.open(path)
except:
print(path, "Unable to find image ")
# resize image
image = resize(image)
# convert image to greyscale image
greyscale_image = to_greyscale(image)
# convert greyscale image to ascii characters
ascii_str = pixel_to_ascii(greyscale_image)
img_width = greyscale_image.width
ascii_str_len = len(ascii_str)
ascii_img = ""
# Split the string based on width of the image
for i in range(0, ascii_str_len, img_width):
ascii_img += ascii_str[i : i + img_width] + "\n"
# save the string to a file
with open("ascii_image.txt", "w") as f:
f.write(ascii_img)
main()