an ASCII/ANSI art tool

EDSCII is an ASCII/ANSI art tool with support for arbitrary character sets and color palettes.

Link: a gallery of things I've created with the program so far!

Update: EDSCII was created in 2012 and is no longer supported. Playscii is EDSCII's successor, it contains all of its features and much more, plus an updated interface. Try it out!

EDSCII screenshot

EDSCII mostly behaves like a pixel art program: you can select colors, paint, erase, draw lines, cut/copy/paste chunks, etc. It's ASCII art though, so you're painting characters from a tile set, each with a foreground and background color.

EDSCII supports any character set or color palette you throw at it. Included with the build are things like the Commodore 64 (PETSCII) set and palette, PC-DOS characters, the DOS EGA palette, the ZX Spectrum set and palette, the Atari 8-bit computer set and palette. These can give your ASCII art a radically different look.

EDSCII: ZX Spectrum character set and color palette

EDSCII can also convert a raster image into ASCII art using any character set + color palette combination:
source image: Exidy Sorcerer ad
output image: Exidy Sorcerer ad, PETSCII character set, C64 palette
Details on this conversion process below.


Here's an annotated video showing some basic editing features:

download + running

download the alpha 5 build (includes Windows EXE and source)
NOTE: I've removed the EXE download from that site because I am no longer supporting EDSCII. The source is still available there but the only reason you would want to use it versus its successor, Playscii, is for historical purposes.

If you have Python and PyGame installed, you can also easily run the latest version of EDSCII from source on Windows, OSX and Linux.

EDSCII has a help screen that explains all keyboard shortcuts and commands. Press H to access it.

View the readme

View the TODO list

image conversion

Details on the raster image conversation process:
  1. Shrink the image to the size of the current view, preserving aspect ratio.
  2. Convert the image into L*a*b* color space for more accurate perceptual color comparisons. Earlier versions didn't do this and the change in quality is dramatic.
  3. Floyd-Steinberg dither the image to the target color palette.
  4. Divide the image into blocks, each the size of a character from the target character set.
  5. Compare each block from the image against each character in the tile set, testing all appropriate foreground-background color combinations.
  6. Determine which character/color works best (or falls within a configurable threshold) and commit that to the image.
This process happens while the application is running, so you can edit the already-processed characters.

Unfortunately, this is a lot of brute force pixel comparisons and so the process is quite slow, taking a few minutes on my (admittedly 6 years old) dual-core PC to process the images shown above. Hardware-accelerating the process would be possible but quite non-trivial.