jp2a - convert JPEG and PNG images to ASCII
jp2a [ options ] [ filename(s) | URL(s) ]
jp2a will convert JPEG and PNG images to ASCII characters. You can
specify a mixture of files and URLs.
- -
- Read JPEG or PNG image from standard input
- --background=light --background=dark
- If you don't want to mess with --invert all the time, just use these
instead. If you are using white characters on a black display, then use
--background=dark, and vice versa.
- -b --border
- Frame output image in a border
- --chars=...
- Use the given characters when producing the output ASCII image. Default is
" ...',;:clodxkO0KXNWM".
- --colors
- Use truecolor (or ANSI color if truecolor is not supported) for text
output and CSS color for HTML output.
- --color-depth=...
- Use a specific color-depth for terminal output. Valid values are: 4 (for
ANSI), 8 (for 256 color palette) and 24 (for truecolor or 24-bit
color).
- -d --debug
- Print debugging information when using libcurl to download images from the
net.
- -f --term-fit
- Use the largest dimension that makes the image fit in your terminal
display.
- --term-height
- Use terminal display height and calculate width based on image aspect
ratio.
- --term-width
- Use terminal display width and calculate height based on image aspect
ratio.
- -z --term-zoom
- Use terminal display width and height.
- --fill
- When used with --html and --color, then color each output character's
background color. For instance, if you want to use fill-output on a light
background, do
jp2a --color --html --html-fill --background=light
somefile.jpg --output=dark.html
To do the same on a light background:
jp2a --color --html --html-fill --background=dark somefile.jpg
--output=light.html
The default is to have fill disabled.
- -x --flipx
- Flip output image horizontally
- -y --flipy
- Flip output image vertically
- --height=N
- Set output height. If only --height is specified, then output width will
be calculated according to the source images aspect ratio.
- -h --help
- Display a short help text
- --grayscale
- Converts image to grayscale when using --html or --colors.
- --html
- Make ASCII output in strict XHTML 1.0. (Will output in HTML for version
2.0.0 and above.)
- --htmlls
- Make ASCII output in HTML (Living Standard), suitable for viewing with web
browsers. This is useful with big output dimensions, and if you want to
check the result with a browser with small font.
- --xhtml
- Make ASCII output in strict XHTML 1.0.
- --html-fill
- Same as --fill. You should use that option instead.
- --html-no-bold
- Do not use bold text for HTML output.
- --html-raw
- Output only the image in HTML codes, leaving out the rest of the webpage,
so you can construct your own. (Will use <br> for version 2.0.0 and
above instead of <br/>.)
- --html-fontsize=N
- Set fontsize when using --html output. Default is 4.
- --html-title=...
- Set HTML output title.
- --output=...
- Write ASCII output to given filename. To explicitly specify standard
output, use --output=-.
- -i --invert
- Invert output image. If you view a picture with white background, but you
are using a display with light characters on a dark background, you should
invert the image.
- --red=...
- --green=...
- --blue=...
- When converting from RGB to grayscale, use the given weights to calculate
luminance. The default is red=0.2989, green=0.5866 and blue=0.1145.
- --size=WIDTHxHEIGHT
- Set output dimension.
- -v --verbose
- Print some verbose information to standard error when reading each JPEG
image.
- --width=N
- Set output width. If you only specify the width, the height will be
calculated automatically.
- -V --version
- Print program version.
- --zoom
- Sets output dimensions to your entire terminal window, disregarding source
image aspect ratio.
jp2a returns 1 when errors are encountered, zero for no errors.
Convert and print imagefile.jpg using ASCII characters in 40 columns and 20
rows:
jp2a --size=40x20 imagefile.jpg
Download an image off the net, convert and print:
jp2a
http://www.google.com/intl/en/logos/easter_logo.jpg
Output picture.jpg and picture2.jpg, each 80x25 characters, using
the characters " ...ooxx@@" for output:
jp2a --size=80x25 --chars=" ...ooxx@@"
picture.jpg picture2.jpg
Output image.jpg using 76 columns, height is automatically
calculated from aspect ratio of image.jpg
cat image.jpg | jp2a --width=76 -
If you use jp2a together with ImageMagick's convert(1) then you
can make good use of pipes, and have ImageMagick do all sorts of image
conversions and effects on the source image. For example:
convert somefile.gif jpg:- | jp2a - --width=80
Check out convert(1) options to see what you can do. Convert can
handle almost any image format, so with this combination you can convert
images in e.g. PDF or AVI files to ASCII.
Although the default build of jp2a includes automatic downloading
of files specified by URLs, you can explicitly download them by using
curl(1) or wget(1), for example:
curl -s http://foo.bar/image.jpg | convert - jpg:- |
jp2a -
If you have compiled jp2a with libcurl(3), you can download images by specifying
URLs:
jp2a https://user:pass@foo.com/bar.jpg
The protocols recognized are ftp, ftps, file, http, https and
tftp.
If you need more control of the downloading, you should use
curl(1) or wget(1) and jp2a read the image from standard input.
jp2a uses pipe and fork to download images using libcurl (i.e., no
exec or system calls) and therefore does not worry about malevolently
formatted URLs.
You can extract the red channel by doing this:
jp2a somefile.jpg --red=1.0 --green=0.0 --blue=0.0
This will calculate luminance based on Y = R*1.0 + G*0.0 + B*0.0.
The default values is to use Y = R*0.2989 + G*0.5866 + B*0.1145.
The latest version of jp2a and news is always available from
https://github.com/Talinx/jp2a.
cjpeg(1), djpeg(1), jpegtran(1), convert(1)
jp2a does not interpolate when resizing. If you want better quality, try using
convert(1) and convert the source image to the exact output dimensions before
using jp2a.
Another issue is that jp2a skips some X-pixels along each
scanline. This gives a less precise output image, and will probably be
corrected in future versions.
Christian Stigen Larsen and Christoph Raitzig
jp2a uses jpeglib to read JPEG files. jpeglib is made by The
Independent JPEG Group (IJG), who have a page at http://www.ijg.org
jp2a uses libpng to read PNG files. libpng's homepage:
http://libpng.org/pub/png/libpng.html
jp2a is distributed under the GNU General Public License v2.