chore: Refactor imageToAsciiText and asciiTextToImage functions. it works now

This commit is contained in:
Achille 2024-07-04 22:09:44 +02:00
parent 0ed934d08f
commit 135fd6c311

26
main.py
View file

@ -23,25 +23,29 @@ def imageToAsciiText(path, cell_size=(8, 8)):
print(result) print(result)
return result return result
def asciiTextToImage(asciiText, fontPath, fontSize): def asciiTextToImage(asciiText, fontPath, cellSize, fontSize, clarityFactor):
# Split the ASCII art into lines # Split the ASCII art into lines
lines = asciiText.split('\n') lines = asciiText.split('\n')
# Calculate the image size needed # Calculate the image size needed
font = ImageFont.truetype(os.path.join(currentDir, fontPath), fontSize) font = ImageFont.truetype(os.path.join(currentDir, fontPath), fontSize * clarityFactor)
max_width = max([len(line) for line in lines]) max_width = max([len(line) for line in lines])
image_width = max_width * fontSize
image_height = len(lines) * fontSize image_width = max_width * cellSize * clarityFactor
image_height = len(lines) * cellSize * clarityFactor
# Create a new blank image # Create a new blank image
image = Image.new('RGB', (image_width, image_height), 'black') image = Image.new('RGB', (image_width, image_height), 'white')
draw = ImageDraw.Draw(image) draw = ImageDraw.Draw(image)
# Draw each line of ASCII art # Draw each line of ASCII art
y = 0 y = 0
for line in lines: for line in lines:
draw.text((0, y), line, fill='white', font=font, spacing=0) x = 0
y += fontSize for char in line:
draw.text((x, y), char, fill='black', font=font, spacing=0)
x += cellSize * clarityFactor
y += cellSize * clarityFactor
return image return image
@ -56,8 +60,10 @@ os.makedirs(exportDir, exist_ok=True)
# Edit params # Edit params
cellSize = (8, 8) cellSize = (8, 8)
fontPath = 'fonts/couri.ttf' # Specify the path to your font file fontPath = 'fonts/courbd.ttf' # Specify the path to your font file
fontSize = 12 # Adjust font size as needed fontSize = 10 # font size in points
clarityFactor = 8
# Process all images in the current directory # Process all images in the current directory
for filename in os.listdir(currentDir): for filename in os.listdir(currentDir):
@ -71,7 +77,7 @@ for filename in os.listdir(currentDir):
# Call the imageToAsciiText function and save the result to the output file # Call the imageToAsciiText function and save the result to the output file
asciiText = imageToAsciiText(imagePath, cellSize) asciiText = imageToAsciiText(imagePath, cellSize)
asciiImage = asciiTextToImage(asciiText, outputPath, fontPath, int(cellSize[0])) asciiImage = asciiTextToImage(asciiText, fontPath, int(cellSize[0]), fontSize, clarityFactor)
asciiImage.save(outputPath) asciiImage.save(outputPath)