Skip to main content

python library and cli tool to convert images and videos to ascii.

Project description

asciipy

python library and cli tool to convert images and videos to ascii

Example output:

image example gif example

additional examples can be found in /examples/

Command line usage:

asciipy [input_file] [output_file] [width] (optional, default=80)

Command line examples:

  • image with default size: asciipy test.png ascii.png

  • video with default size: asciipy test.mp4 ascii.mp4

  • image with custom size: asciipy test.png ascii.png 160

  • video with custom size: asciipy test.mp4 ascii.mp4 160

Optional dependencies (URL and Youtube support):

  • note: these libraries can be manually installed instead. youtube_dl can be used instead of yt-dlp
  • asciipy-any[full] will install requests and yt-dlp to enable downloading from urls and youtube videos.
  • asciipy-any[url] will install requests to enable downloading from urls.
  • asciipy-any[youtube] will install yt-dlp to enable downloading youtube videos.

Python usage:

asciipy provides four classes ImageConverter, GifConverter, VideoConverter, and BaseConverter

  • note: input fields can accept a url to convert, instead of local media or buffers.

BaseConverter: all other converters inherit from this class.

  • takes two positional arguments, width, and palette.
  • int width: desired width in ascii characters (height is implicit from the aspect ratio of the input)
  • List[Tuple[int, int, int]] palette: optional custom color palette, list of RGB tuples. currently 3 palettes are included in asciipy.palettes. c64, nes, and cmd

Methods:

convert: method called to start conversion.

  • takes 2 arguments, input, and output, and returns None.
  • os.PathLike, IOBase, str input: input media to convert. can be a file, iobuffer, or url.
  • os.PathLike, IOBase, str output: destination of the converted media.

ImageConverter: class used for image conversion.

  • takes no extra arguments.

GifConverter: class used for gif conversion.

  • takes one extra argument:
  • bool gif: if the converted output should be a gif, defaults to True. if False, the first frame of the gif will be output as a png.

VideoConverter: class used for conversion of videos.

  • takes one extra argument:
  • bool progress: if a progress indicator should be printed during conversion.

Palettes:

custom color palettes can be provided to the constructor of any converter. it should be a list of rgb tuples. the order of the tuples does not matter, however the order inside the tuple must be RGB, or you will get unintended colors.

example (black and white):

palette = [
    (0, 0, 0),
    (255, 255, 255)
]

Python examples:

image to ascii cli

from asciipy import ImageConverter
import sys

img = ImageConverter()
img.convert(sys.argv[1], './ascii.png')
print(f"{sys.argv[1]} converted and written to ./ascii.png")

Planned features:

  • proper gif support (mostly done, but still to buggy to be considered finished)
  • ability to write output as html
  • ability to convert vectors (not sure how i could even go about this)

need help?

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asciipy-any-0.0.1.tar.gz (19.3 kB view hashes)

Uploaded Source

Built Distribution

asciipy_any-0.0.1-py3-none-any.whl (20.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page