Skip to main content

Convert an ANSI string to an image. Great for adding terminal output into a readme.

Project description

GitHub top language Repository size Issues License Commit activity Last commit PyPI Downloads PyPI Total Downloads PyPI Version

AnsiToImg

Project Icon

Convert an ANSI string to an image. Great for adding terminal output into a readme.

Examples

Here is an example of some code and the images it produces:

Functions accept the following arguments:

  • ansiText - text to process
  • fileName - name of the file to write to
  • theme - a base24 theme. Defaults to atom one dark
import sys
import os
from pathlib import Path
import platform
import ctypes
from catimage.catimage import generateHDColour

THISDIR = str(Path(__file__).resolve().parent)
sys.path.insert(0, os.path.dirname(THISDIR))
from ansitoimg.render import ansiToSVG, ansiToRender, ansiToSVGRender, ansiToHTML, ansiToHTMLRender

if platform.system() == "Windows":
	kernel32 = ctypes.windll.kernel32
	kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)

# Define ANSI text
example = "👋\033[32mHello\033[0m, \033[34mWorld\033[0m🌏\033[31m!\033[0m\n\033[41m👋\033[0m\033[43m🦄\033[0m\033[42m🐘\033[0m\033[3m\033[9m13\033[0m\033[1m3\033[0m\033[4m7\033[0m\033[46m🍄\033[0m\033[44m🎃\033[0m\033[45m🐦\033[0m"
example2 = "hello\nworld\n\033[42m\033[31mwe meet again\033[0m\nABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz😁😂🤣😃😄😅😆😉😊😋😎😍😘🥰😗😙😚☺🙂🤗🤩🤔🤨😐😑😶🙄😏😣😥😮🤐😯😪asdfghjk"
example3 = generateHDColour(THISDIR + "/test.png", 40)

# Print
print(example)
print()
print(example2)
print()
print(example3)
print()

# To SVG
ansiToSVG(example, THISDIR + "/example.svg")
ansiToSVG(example2, THISDIR + "/example2.svg")
ansiToSVG(example3, THISDIR + "/example3.svg")

# To Render
ansiToRender(example, THISDIR + "/example.png")
ansiToRender(example2, THISDIR + "/example2.png")
ansiToRender(example3, THISDIR + "/example3.png")

# To SVGRender
ansiToSVGRender(example, THISDIR + "/svgExample.png")
ansiToSVGRender(example2, THISDIR + "/svgExample2.png")
ansiToSVGRender(example3, THISDIR + "/svgExample3.png")

# To HTML
ansiToHTML(example, THISDIR + "/example.html")
ansiToHTML(example2, THISDIR + "/example2.html")
ansiToHTML(example3, THISDIR + "/example3.html")

# To HTMLRender
ansiToHTMLRender(example, THISDIR + "/htmlExample.png")
ansiToHTMLRender(example2, THISDIR + "/htmlExample2.png")
ansiToHTMLRender(example3, THISDIR + "/htmlExample3.png")

SVG Image

example

example2

example3

Render Image

example

example2

example3

SVGRender Image

example

example2

example3

HTML/ HTMLRender Image

example

example2

example3

Windows Terminal

winterm

Choosing ansiToSVG, ansiToRender, ansiToSVGRender, ansiToHTML or ansiToHTMLRender

ansiToSVG

This is better for the vast majority of cases as the image sizes are smaller for reasonably simple ANSI sequences. The image size scales proportionally with the length of the ANSI sequence. A large number of applications tend to opt for shorter sequences for output making ansiToSVG the better option. ansiToSVG also handles emoji as well as the OS does. For instance, on Windows 10 one can expect full colour emoji. Image sizes can get out of hand for some cases such as catimage output as those tend to be very long ANSI sequences.

ansiToRender

The image size does not scale to the length of the ANSI sequence but does scale to the number of lines of terminal output. This is ideal for output of complex ANSI sequences that would be huge if ansiToSVG were used. However, emojis are in black and white and show quite poorly on coloured backgrounds.

ansiToSVGRender

Takes the advantages that ansiToRender has whilst keeping colour emojis, Yay! This uses pyppeteer to fire up a headless browser which opens the SVG and takes a screenshot.

ansiToHTML

Has the same advantages and disadvantages of ansiToSVG though this is not suitable to be included in a GitHub readme

ansiToHTMLRender

Has the same advantages and disadvantages of ansiToSVGRender

Docs

See the Docs for more information.

Install With PIP

pip install ansitoimg

Head to https://pypi.org/project/ansitoimg/ for more info

Language information

Built for

This program has been written for Python versions 3.7 - 3.10 and has been tested with both 3.7 and 3.10

Install Python on Windows

Chocolatey

choco install python

Windows - Python.org

To install Python, go to https://www.python.org/downloads/windows/ and download the latest version.

Install Python on Linux

Apt

sudo apt install python3.x

Dnf

sudo dnf install python3.x

Install Python on MacOS

Homebrew

brew install python@3.x

MacOS - Python.org

To install Python, go to https://www.python.org/downloads/macos/ and download the latest version.

How to run

Windows

  • Module py -3.x -m [module] or [module] (if module installs a script)

  • File py -3.x [file] or ./[file]

Linux/ MacOS

  • Module python3.x -m [module] or [module] (if module installs a script)

  • File python3.x [file] or ./[file]

Download Project

Clone

Using The Command Line

  1. Press the Clone or download button in the top right
  2. Copy the URL (link)
  3. Open the command line and change directory to where you wish to clone to
  4. Type 'git clone' followed by URL in step 2
    git clone https://github.com/FHPythonUtils/AnsiToImg
    

More information can be found at https://help.github.com/en/articles/cloning-a-repository

Using GitHub Desktop

  1. Press the Clone or download button in the top right
  2. Click open in desktop
  3. Choose the path for where you want and click Clone

More information can be found at https://help.github.com/en/desktop/contributing-to-projects/cloning-a-repository-from-github-to-github-desktop

Download Zip File

  1. Download this GitHub repository
  2. Extract the zip archive
  3. Copy/ move to the desired location

Community Files

Licence

MIT License Copyright (c) FredHappyface (See the LICENSE for more information.)

Changelog

See the Changelog for more information.

Code of Conduct

Online communities include people from many backgrounds. The Project contributors are committed to providing a friendly, safe and welcoming environment for all. Please see the Code of Conduct for more information.

Contributing

Contributions are welcome, please see the Contributing Guidelines for more information.

Security

Thank you for improving the security of the project, please see the Security Policy for more information.

Support

Thank you for using this project, I hope it is of use to you. Please be aware that those involved with the project often do so for fun along with other commitments (such as work, family, etc). Please see the Support Policy for more information.

Rationale

The rationale acts as a guide to various processes regarding projects such as the versioning scheme and the programming styles used. Please see the Rationale for more information.

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

ansitoimg-2022.tar.gz (9.2 MB view details)

Uploaded Source

Built Distribution

ansitoimg-2022-py3-none-any.whl (9.2 MB view details)

Uploaded Python 3

File details

Details for the file ansitoimg-2022.tar.gz.

File metadata

  • Download URL: ansitoimg-2022.tar.gz
  • Upload date:
  • Size: 9.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Windows/10

File hashes

Hashes for ansitoimg-2022.tar.gz
Algorithm Hash digest
SHA256 d6d2bd5fd87963e4ecfab38dfeba53867e6843bfc012b2a33d67593844e0abbb
MD5 d02cc5b19ccf23c76e6cf38ba8dd186a
BLAKE2b-256 311880cc4eb4d223a176284e266c8a40d4130fb56144152566e5e26804af025b

See more details on using hashes here.

File details

Details for the file ansitoimg-2022-py3-none-any.whl.

File metadata

  • Download URL: ansitoimg-2022-py3-none-any.whl
  • Upload date:
  • Size: 9.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.1 Windows/10

File hashes

Hashes for ansitoimg-2022-py3-none-any.whl
Algorithm Hash digest
SHA256 9448c40622cf3e270cf5fd36feb1f32a1a9c50bd322338c425be8eb3a8b0bb5d
MD5 6b35a2d1b62f9aac9374bac1304e0eaf
BLAKE2b-256 997f2ad3cbc6086fd1d6686f991280c6d5a271f5c5ade9b2ec618b9d63a63f44

See more details on using hashes here.

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