A Python library and CLI tool for converting images and videos into ASCII art.
Project description
ascii_art_python
A powerful and flexible Python library and Command Line Interface (CLI) to convert your images and videos into stunning ASCII art.
ascii_art_python uses advanced edge detection (via OpenCV) and luminosity mapping to generate high-quality ASCII representations. It supports multiprocessing for fast video conversion and even transfers original audio tracks to your ASCII videos!
Preview
Below is an example of an image featuring the Python logo:
||=*|{||#&&&&||||||
/##--\&&&&&&&&&&$$&\\
|&&| |{&&&&&&&&&$$$$\
|&&\--/&&&&&&&&&$$$$$|
:\-#####---\&&$$$$$$$|
------/;;;;;;;===|$$$$$$$$$| -----
/--##&&&&&----------/$$$$$$$$@| .:::::-\\
//#####&&&&&&&&&&&&$$$$$$$$$$$@| .:::::::\\
//&####&&&&&&&&&&&$$$$$$$$$$$$$@| .::::::::\
|####&&&&&&&&&&$$$$$$$$$@@@@@@@//.:::::::::|
|&#&&&&&&&&&$$-----------------..:::::::::::|
|&&&&&&&&&&//-.................:::::::::::::|
|&&&&&&&&&// ..::::::::::::::::::::::::::;;|
|&&&&&&&$| ::::::::::::::::::::::::::;;;;;/
\\&&&&&$$| :::::::::::::::::::::::;;;;;;;//
\\$$$$$@| ::::::::::::::::::;;;;;;;;;;;//
------/ ::::::::::...........--------
::::::::::\---::::--|/
|::::::::::::;;/--\;;|
|\::::::::;;;;;| |;;|
\\::::;;;;;;;;\--:;//
\---:;;;;;;;;;::--/
------------
And below, an example of a video featuring Nyan Cat:
Features
-
Image to ASCII: Convert standard images (JPG, PNG, etc.) to ASCII strings or export them as PNG files.
-
Video to ASCII: Convert entire video files to ASCII animations (MP4 format) with original audio preserved.
-
Command Line Interface: Quickly convert files directly from your terminal.
-
Three Rendering Modes:
-
full_mode: Combines edge detection and background luminosity for highly detailed art. -
old_skool: Uses directional characters based on edge detection (perfect for a "Matrix" look). -
new_skool: Uses background characters mapped by luminosity.
-
-
Terminal Playback: Play ASCII videos or display images directly within your console.
Installation
Install the package easily via pip:
pip install ascii_art_python
Command Line Interface (CLI) Usage
The library provides convenient commands to process your media right from the terminal.
Display directly in the terminal
Automatically resizes the output to fit your current terminal window.
# Display an image (default full_mode)
aap-echo my_image.jpg
# Play a video with the 'old_skool' edges-only style
aap-echo my_video.mp4 -m old_skool
Export to a file
Saves the ASCII output to your disk (.png for images, .mp4 for videos).
# Export an image with a specific width and 'new_skool' mode
aap-export landscape.jpg landscape_ascii -w 150 -m new_skool
# Export a complete video and keep the original audio track
aap-export music_video.mp4 ascii_clip --sound -f 10
Python API Usage
You can also integrate ascii_art_python directly into your own Python scripts.
import ascii_art_python as aap
# --- 1. Image Conversion ---
# Load an image and set a target width
img = aap.Image.from_path("my_image.jpg", width=120)
# Print it to the console
print(img.to_string(old_skool=True, new_skool=True, one_on_two=True))
# Or export it as a PNG file
img.export(filename="my_ascii_image", font_size=15, old_skool=True, new_skool=True)
# --- 2. Video Conversion ---
# Load a video (processing at 15 FPS)
video = aap.Video("my_video.mp4", width=80, wanted_fps=15)
# Export the video with sound (uses multiprocessing for speed)
video.export(filename="my_ascii_video", sound=True, old_skool=True, new_skool=True)
Requirements
-
Python 3.9+
-
opencv-python -
numpy -
Pillow -
moviepy -
click -
tqdm
Full Documentation
To check the complete API, class details, and advanced export options, visit: the doc.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ascii_art_python-3.0.0b0.tar.gz.
File metadata
- Download URL: ascii_art_python-3.0.0b0.tar.gz
- Upload date:
- Size: 301.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbbf8f527b2f2c8b297779cd93c47d1806b1285b402583e9ad305879d4bd1123
|
|
| MD5 |
f96ea81c6ea76f001e1586defd57cf32
|
|
| BLAKE2b-256 |
629282c50bd4ed9d6817c007f596dbf3e756532f6e4cd29c18a230291f616efd
|
File details
Details for the file ascii_art_python-3.0.0b0-py3-none-any.whl.
File metadata
- Download URL: ascii_art_python-3.0.0b0-py3-none-any.whl
- Upload date:
- Size: 303.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46f24aa0c06859f21825a1ce6d80d624ca96e0bb849b00aeb5e1c8ccd97a54c3
|
|
| MD5 |
287518e37df2276529a74fa3558b2f43
|
|
| BLAKE2b-256 |
926fde3f5b1a1a42c2256c9ec9519f361417c13ea0b0d57306d1a2da58b1598a
|