-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
61 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#!/usr/bin/env python3 | ||
|
||
# 輸入文字,利用 BoutiqueBitmap9x9_1.9.ttf 點陣字體輸出成 ASCII ART | ||
# | ||
# | ||
|
||
from PIL import Image, ImageFont, ImageDraw | ||
|
||
def text_to_terminal(font_path, text, height=9, spacing=1): | ||
# Load the font with the specified height | ||
font = ImageFont.truetype(font_path, height-1) | ||
|
||
# Calculate the width of the text with additional spacing | ||
width = int(font.getlength(text) + spacing * len(text)) | ||
|
||
# Create an image with 'L' mode (8-bit pixels, black and white) | ||
image = Image.new('L', (width, height), 1) | ||
draw = ImageDraw.Draw(image) | ||
|
||
# Draw the text with added space after each character | ||
current_x = 0 | ||
for char in text: | ||
draw.text((current_x, 0), char, font=font, fill=255) | ||
current_x += font.getlength(char) + spacing | ||
|
||
# Convert the image to grayscale and threshold to binary | ||
binary_image = image.point(lambda x: 0 if x < 128 else 1, '1') | ||
|
||
# Convert to ASCII | ||
ascii_art = [] | ||
for y in range(binary_image.height): | ||
line = [] | ||
for x in range(binary_image.width): | ||
pixel = binary_image.getpixel((x, y)) | ||
line.append('█' if pixel else ' ') | ||
ascii_art.append(''.join(line)) | ||
|
||
return '\n'.join(ascii_art) | ||
|
||
def main(): | ||
font_path = '~/BoutiqueBitmap9x9_1.9.ttf' # Path to your TrueType font file | ||
height = 11 # Desired height of the text in pixels | ||
spacing = 0 # Space between characters | ||
|
||
print("歡迎使用文字轉ASCII藝術工具!") | ||
print("請輸入您想轉換的文字(輸入'q'退出):") | ||
|
||
while True: | ||
user_input = input("> ") | ||
if user_input.lower() == 'q': | ||
print("感謝使用,再見!") | ||
break | ||
|
||
# Generate and display the ASCII art | ||
ascii_art = text_to_terminal(font_path, user_input, height, spacing) | ||
print("\n您的ASCII藝術:") | ||
print(ascii_art) | ||
print("\n請輸入下一段文字(或輸入'q'退出):") | ||
|
||
if __name__ == "__main__": | ||
main() |