Potrace(TM) 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 format), and the default output is an
encapsulated PostScript file (EPS). A typical use is to create EPS
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: EPS, PostScript, PDF, SVG (scalable vector graphics), DXF, GeoJSON, PGM (for easy antialiasing of pixel-based images), Gimppath, and XFig. Additional backends might be added in the future.
Mkbitmap is a program distributed with Potrace which can be used to pre-process the input for better tracing behavior on greyscale and color images. See the mkbitmap examples page.
|Trouble using Potrace? Here are the answers to some frequently asked questions.|
For changes prior to version 1.12, see the file NEWS.
For a more detailed list of changes, see the ChangeLog.
February 19, 2017: Release 1.14. This release consists of bugfixes and minor portability improvements. A number of bugs triggered by malformed BMP files have been fixed, including CVE-2016-8685 and CVE-2016-8686. Error reporting has been improved. The image size is now truncated when the bitmap data ends prematurely. It is now possible to use negative dy in bitmap data. Portability has been improved to encompass C++11. The default compiler is now clang if available. Thanks to Nelson Beebe and Martin Gieseking for reporting portability issues, and to Agostino Sarubbo for reporting bugs.
October 22, 2015: Release 1.13. Some critical bugs in the processing of BMP files were fixed. These bugs allowed the program to be crashed, or potentially to be abused in other ways, by feeding it specially crafted BMP files. Thanks to Tomasz Buchert and Agostino Sarubbo for reporting these bugs. Portability was improved for C99 and for MSVC++. Thanks to Peter Breitenlohner, Nelson Beebe, and Martin Gieseking for reporting portability issues.
March 24, 2015: Release 1.12. Fixed memory overflow bug triggered by very large bitmaps. Fixed binary file mode on 64-bit Windows. Portability improvements.
Potrace is built from sources using the standard configure/make
commands. Please see the file INSTALL for generic
installation instructions, and the file README for
compile time configuration options specific to Potrace. Some
pre-compiled binary distributions are also available. See the file README for instructions on how to install Potrace from
a binary distribution. Additional instructions for Windows users are
contained in the file README-WIN. If you would
like to ensure the accuracy of the downloaded files, you can
double-check their SHA1 sums.
(2) Linux for Alpha and Sparc64, FreeBSD, NetBSD, and OpenBSD binaries provided by Nelson Beebe <email@example.com>.
(3) AROS binaries supplied by Matthias Rustler <mrustler at gmx.de>. See the AROS archives for sources and updates.
(4) Debian i386 Package maintained by Bartosz Fenski <fenio at debian.org>. Debian has centralized package management and users should run "sudo apt-get install potrace" to install.
(5) Amiga Package provided by Guillaume Boesel <guillaume at boesel.fr>. See the OS4 Depot for updates.
(6) SuSE RPMs provided by Stanislav Brabec <sbrabec at suse.cz>. Potrace appears in the official SuSE distribution.
(7) Fedora package maintained by Susi Lehtola <jussilehtola at fedoraproject.org>. Potrace is available on all Fedora branches. Fedora has centralized package management and users should run "yum install potrace" as root to install.
(8) ArchLinux package maintained by Damir Perisa <damir at archlinux.org>. ArchLinux has centralized package management and users should run "pacman -S potrace" as root to install.
(9) FreeBSD Packages maintained by Piotr Smyrak <piotr at smyrak.com>.
(10) Fink package maintained by Daniel Macks <dmacks at netspace.org>. Fink has centralized package management and users should run "fink install potrace" as root to install.
(11) Macports has centralized package management and users should run "port install potrace" as root to install.
(12) NixOS has centralized package management and users should run "nix-env -i potrace" as root to install.
potrace 1.14. Transforms bitmaps into vector graphics. Usage: potrace [options] [filename...] General options: -h, --help - print this help message and exit -v, --version - print version info and exit -l, --license - print license info and exit File selection: filename - an input file -o, --output filename - write all output to this file -- - end of options; 0 or more input filenames follow Backend selection: -b, --backend name - select backend by name -e, --eps - EPS backend (encapsulated PostScript) (default) -p, --postscript - PostScript backend -s, --svg - SVG backend (scalable vector graphics) -g, --pgm - PGM backend (portable greymap) -b pdf - PDF backend (portable document format) -b pdfpage - fixed page-size PDF backend -b dxf - DXF backend (drawing interchange format) -b geojson - GeoJSON backend -b gimppath - Gimppath backend (GNU Gimp) -b xfig - XFig backend Algorithm options: -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[xn] - resolution (in dpi) (dimension-based backends) -x, --scale n[xn] - 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 SVG options: --group - group related paths together --flat - whole image as a single path Postscript/EPS/PDF options: -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 PGM options: -G, --gamma n - gamma value for anti-aliasing (default 2.2) Frontend options: -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: eps, postscript, ps, pdf, pdfpage, svg, dxf, geojson, pgm, gimppath, xfig.
For detailed usage information, see the potrace(1) man page.
|Potrace has a project page on SourceForge. There, you will find facilities for reporting bugs, submitting patches, asking for support, asking for features, or discussing Potrace in general. You are encouraged to use these facilities. You can also send email to the author. Please also check the Frequently Asked Questions.|
A non-GPL version of Potrace, called Potrace Professional(TM), is
available for integration into proprietary software. Licenses are
available from my company, |
Here are some case studies by people who have used Potrace to do
interesting things. I particularly love projects that use Potrace to
create objects in the physical world, such as C. Scott Ananian's
article on how to make stained glass windows from color scans, and
Matt Parsons's project on creating a model airplane from old scanned
Here are some web articles, listings, blogs, and books that cover
Potrace and its applications.
Important notice about ports. 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".
Notwithstanding the foregoing paragraph, I do not warrant the quality of any third-part ports; any ports that are posted here are provided "as is", without any warranty.
|Copyright © 2001-2017 Peter Selinger.|
|The Potrace logo and mascot was designed by Karol Krenski. Copyright © 2003 Karol Krenski and Peter Selinger. The logo is licensed under GPL.|
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, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|"Potrace" is a trademark of Peter Selinger. "Potrace Professional" and "Icosasoft" are trademarks of Icosasoft Software Inc. Other trademarks belong to their respective owners.|