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 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 can also convert a raster image into ASCII art using any character set + color palette combination:
videoHere's an annotated video showing some basic editing features:
download + runningdownload 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 conversionDetails on the raster image conversation process:
- Shrink the image to the size of the current view, preserving aspect ratio.
- 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.
- Floyd-Steinberg dither the image to the target color palette.
- Divide the image into blocks, each the size of a character from the target character set.
- Compare each block from the image against each character in the tile set, testing all appropriate foreground-background color combinations.
- Determine which character/color works best (or falls within a configurable threshold) and commit that to the image.
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.