POTRACE - transform bitmaps into vector graphics
* * *
Potrace is a tool for tracing a bitmap, which means, transforming a
bitmap into a smooth, scalable image. The input is a bitmap (PBM,
PGM, PPM, or BMP), and the output is one of several vector file
formats. A typical use is to create SVG or PDF files from scanned
data, such as company or university logos, handwritten notes, etc.
The resulting image is not "jaggy" like a bitmap, but smooth. It can
then be rendered at any resolution.
Potrace can currently produce the following output formats: SVG, PDF,
EPS, PostScript, DXF, GeoJSON, PGM (for easy antialiasing of
pixel-based images), Gimppath, and XFig. Additional backends might be
added in the future.
A separate program, mkbitmap, is also provided. This program can act
as a pre-processor for Potrace, applying scaling and various filters
to an image before converting it to a bitmap. This is useful for
potracing greyscale and color images.
Potrace relies on the zlib library for PostScript level 3
compression. This library is pre-installed on most modern systems.
If not present, it can be obtained from http://www.gzip.org/zlib/.
For generic compilation instructions, see the file INSTALL. In
addition, the following compile time options (options to ./configure)
--with-libpotrace install Potrace library and headers (default: no)
--disable-zlib disable PostScript level 3 compression
--enable-metric use metric units (centimeters) as default
--enable-a4 use a4 as the default papersize
--enable-dumb-tty use simplified ASCII-only progress bar
--with-included-getopt avoid using the system-wide getopt library
See also ./configure --help.
If you are installing from sources, just do "make install" as root.
If you are installing from a binary distribution, just copy the
"potrace" and "mkbitmap" binaries to a place where the operating
system expects them, such as /usr/local/bin. Also copy the files
"potrace.1" and "mkbitmap.1" to a directory where the operating
system looks for man pages, such as /usr/local/man/man1. For
instructions on installing Potrace under Windows, see the file
For more detailed usage information, see the man page.
Usage: potrace [options] [filename...]
-h, --help - print this help message and exit
-v, --version - print version info and exit
-l, --license - print license info and exit
<filename> - an input file
-o, --output <filename> - write all output to this file
-- - end of options; 0 or more input filenames follow
-b, --backend <name> - select backend by name
-b svg, -s, --svg - SVG backend (scalable vector graphics)
-b pdf - PDF backend (portable document format)
-b pdfpage - fixed page-size PDF backend
-b eps, -e, --eps - EPS backend (encapsulated PostScript) (default)
-b ps, -p, --postscript - PostScript backend
-b pgm, -g, --pgm - PGM backend (portable greymap)
-b dxf - DXF backend (drawing interchange format)
-b geojson - GeoJSON backend
-b gimppath - Gimppath backend (GNU Gimp)
-b xfig - XFig backend
-z, --turnpolicy <policy> - how to resolve ambiguities in path decomposition
-t, --turdsize <n> - suppress speckles of up to this size (default 2)
-a, --alphamax <n> - corner threshold parameter (default 1)
-n, --longcurve - turn off curve optimization
-O, --opttolerance <n> - curve optimization tolerance (default 0.2)
-u, --unit <n> - quantize output to 1/unit pixels (default 10)
-d, --debug <n> - produce debugging output of type n (n=1,2,3)
Scaling and placement options:
-P, --pagesize <format> - page size (default is letter)
-W, --width <dim> - width of output image
-H, --height <dim> - height of output image
-r, --resolution <n>[x<n>] - resolution (in dpi) (dimension-based backends)
-x, --scale <n>[x<n>] - scaling factor (pixel-based backends)
-S, --stretch <n> - yresolution/xresolution
-A, --rotate <angle> - rotate counterclockwise by angle
-M, --margin <dim> - margin
-L, --leftmargin <dim> - left margin
-R, --rightmargin <dim> - right margin
-T, --topmargin <dim> - top margin
-B, --bottommargin <dim> - bottom margin
--tight - remove whitespace around the input image
Color options, supported by some backends:
-C, --color #rrggbb - set foreground color (default black)
--fillcolor #rrggbb - set fill color (default transparent)
--opaque - make white shapes opaque
--group - group related paths together
--flat - whole image as a single path
-c, --cleartext - do not compress the output
-2, --level2 - use postscript level 2 compression (default)
-3, --level3 - use postscript level 3 compression
-q, --longcoding - do not optimize for file size
-G, --gamma <n> - gamma value for anti-aliasing (default 2.2)
-k, --blacklevel <n> - black/white cutoff in input file (default 0.5)
-i, --invert - invert bitmap
Progress bar options:
--progress - show progress bar
--tty <mode> - progress bar rendering: vt100 or dumb
Dimensions can have optional units, e.g. 6.5in, 15cm, 100pt.
Default is inches (or pixels for pgm, dxf, and gimppath backends).
Possible input file formats are: pnm (pbm, pgm, ppm), bmp.
Backends are: svg, pdf, pdfpage, eps, postscript, ps, dxf, geojson, pgm,
POTRACE LIBRARY (FOR DEVELOPERS)
As of Potrace release 1.6, the Potrace core functionality has been
separated into a library libpotrace.a. This makes it easy to integrate
tracing functionality into other GPL programs. The API of the library
is defined in the header file potracelib.h, and is documented in
doc/potracelib.pdf. It is not by default installed, but can be
installed with the --with-libpotrace configuration option.
Usage information is contained in the man page:
Many common questions are answered in the FAQ:
Some examples are given on the following web pages:
The inner workings of the potrace algorithm are explained here:
The potrace library is documented here:
Copyright (C) 2001-2019 Peter Selinger
The use of the name "Potrace" is governed by a separate policy, see
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See also http://www.gnu.org/.
See the file COPYING for details.
"Potrace" is a trademark of Peter Selinger.
Policy on using the name "Potrace". If you are planning to modify
Potrace, including making a port of Potrace to another programming
language, please be aware of the following. While the source code of
Potrace is licensed under the GNU General Public License, the name
"Potrace" is my trademark, and may only be used with my permission.
In practice, I will permit the use of the name "Potrace" in
connection with a port of Potrace to another programming language,
provided that the port complies with the term of the GNU General
Public License and produces the same high quality vectorized output
as the original Potrace. Ports that are buggy or do not produce high
quality output are not permitted to use the name "Potrace". To ensure
compliance with this policy, please run your port by me before making
it public. Also, if you use the "Potrace" name (or any derivative,
such as "MyPotrace"), you must provide a name and email address where
I can reach you. Derivatives of Potrace that are posted anonymously
or where the authors cannot be reached or do not reply to email or
bug reports are not permitted to use the name "Potrace".
The purpose of this policy is to allow people to port Potrace to as
many programming languages as possible, while also ensuring that all
such ports are of the same high quality that has come to be
associated with the name "Potrace".
The key fingerprint of Peter Selinger's GPG key is:
12A2 4B3C 3790 B688 E484 7A98 A68B CC37 CA31 696A
This may be useful for authenticating future versions of Potrace.