Take the 2-minute tour ×
Graphic Design Stack Exchange is a question and answer site for Graphic Design professionals, students, and enthusiasts. It's 100% free, no registration required.

Is there a command-line program (for Linux) that can convert an image to ascii art and then save that output as an image e.g. jpg or png?

To illustrate what I'm in need of, I want to convert the image below into ascii art enter image description here

The output that I desire from a program should be similar to this one, which was created by taking a screenshot of the output of an image-to-ascii converter (the output was pure text)

enter image description here

I'm aware that GIMP has the ability to save an image as ascii art and aview can also convert an image to ascii. However, the former cannot be done via the command line and the latter only lets you view the output, not save it (I don't want to resort to taking a screenshot of the output).

I'm also aware that libcaca can save its output to an image, but it only outputs colourful ascii, like below.

enter image description here

Made by converting the source image to greyscale and then with the following command:

img2txt -W 70 -f tga input.jpg > output.tga

The reason for wanting a command-line program is to batch process a folder full of images.

share|improve this question
1  
I have never tried it, but I do know that it is possible to pipe text to convert (ImageMagick). If you set the output -f of img2txt to ansi (rather than colored ansi), you can pipe the result to convert (or other suitable software) –  horatio May 28 '13 at 15:06
    
@horatio: convert seems to expect a file input and refuses to read from a pipe. We can do it via a temporary file anyway. –  Takkat May 28 '13 at 18:17

3 Answers 3

up vote 2 down vote accepted

You can use this python code I created to create ascii art from still images and videos:

https://gist.github.com/lindylex/9374326

Example output

Original enter image description here

ASCII art output (python ascii_movie_image_ver_1.py cat.jpg 4 10) enter image description here

share|improve this answer
1  
links come and go, even if it your own site... could you please add two screenshots of "before" and "after" using your code? –  Ilan Apr 15 at 6:25
    
@Ilan I've added an example and pointed to a public git repository –  user5182 May 5 at 20:19

In case you seem to be running Linux you may stitch the applications easily together to get the desired result. This can then also be incorporated in your batch processing script.

The example below makes use of jp2a, a powerfull JPG to ASCII-art converter with many options to achieve desired results (consult the manpage). We then further process the resulting ASCII text file to an image using convert from the ImageMagick suite. Again there are many options to fine tune the result. Both applications are likely to be available from your distribution's repositories.

Below sample script will produce an ASCII-art image (format depending on the extension we give, .jpg is for JPEG) from an input JPEG-image. The source is rendered to 160 character width at 6 pt. This will then just fit on the default page size as pre-defined from convert.

#! /bin/bash
#Usage ./j2asc infile.jpg outfile.jpg

echo "converting $1 to $2"
jp2a --width=160 -i  $1 --output=tmp.txt
convert -font Courier -pointsize 6 tmp.txt $2
share|improve this answer
    
This is probably the closest I'll get to my desired output. Thanks! –  user5182 May 30 '13 at 10:01
    
Is there a way to specify the width to be something other then 835px? I want to convert the ascii art to a 1920x1080 wallpaper image but when I pass the -resize 1920x1080 option the width remains at 835px. –  recursion.ninja May 10 at 20:34
    
@awashburn: image size is determined by character number (width) and pointsize. Enlarge pointsize for a larger output or scale the resulting image in a second run. –  Takkat May 10 at 22:47
1  
For MacOS users: jp2a is also available via homebrew and running: brew install jp2a. –  k0pernikus Jul 8 at 9:27

In Node.js Knockout 2012, there was a winning submission that took a webcam video feed and spit out an "ascii feed":

Asciigram

Asciigram page

Asciigram is a "productivity tool" that allows you to creates ASCII videos and images using your webcam. You can also create ASCII images dragging images onto the page.[Link]

It's not exactly command line, but maybe you can retrofit it for your needs. The library they use to convert the image to ascii is called Jscii.

share|improve this answer
    
It only outputs text and not images. Plus, it's not a command line program –  user5182 May 28 '13 at 20:50

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.