jp2a(1) USER COMMANDS jp2a(1)
NAME
jp2a - convert JPEG and PNG images to ASCII
SYNOPSIS
jp2a [ options ] [ filename(s) | URL(s) ]
DESCRIPTION
jp2a will convert JPEG and PNG images to ASCII characters. You can
specify a mixture of files and URLs.
OPTIONS
- 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
for
version 2.0.0 and above instead of
.)
--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.
--edge-threshold= ...
Specifies an image gradient above which to shade lines and edges
with directional glyphs (such as -/|\). The right value to pick
up the edges nicely will depend on the image but might be around
0.5.
--edges-only
Only draw edges, so that the resulting image is like a line
drawing or edge detector. This option should be used in
conjunction with --edge-threshold so that edges are drawn.
RETURN VALUES
jp2a returns 1 when errors are encountered, zero for no errors.
EXAMPLES
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 -
You can pass the --edge-threshold option to highlight the edges of the
image, or add the --edges-only option to draw only the edges, to
produce a line drawing.
jp2a --edge-threshold=0.5 --edges-only imagefile.jpg
DOWNLOADING IMAGES FROM THE NET
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.
GRAYSCALE CONVERSION
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.
PROJECT HOMEPAGE
The latest version of jp2a and news is always available from
https://github.com/Talinx/jp2a.
SEE ALSO
cjpeg(1), djpeg(1), jpegtran(1), convert(1)
BUGS
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.
AUTHOR
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
LICENSE
jp2a is distributed under the GNU General Public License v2.
version 1.2.0 January 7, 2024 jp2a(1)