Pamtosvg User Manual

Pamtosvg User Manual

Application Notes


pamtosvg - convert a Netpbm image to a SVG (Scalable Vector Graphics) image



[-background-color=colorname] [-centerline] [-corner-threshold=angle] [-corner-always-threshold=angle] [-corner-surround=integer] [-tangent-surround=integer] [-error-threshold=float] [-filter-iterations=count] [-line-reversion-threshold=float] [-line-threshold=float] [-width-weight-factor=float] [-preserve-width] [-remove-adjacent-corners] [-log] [-report-progress] [pnmfile]

Minimum unique abbreviation of option is acceptable. You may use double hyphens instead of single hyphen to denote options. You may use white space in place of the equals sign to separate an option name from its value.


This program is part of Netpbm(1)

pamtosvg reads a PNM image as input and produce an SVG (Scalable Vector Graphics) image as output. Thus, it traces curves in the input image and creates a set of splines that represent the image.

SVG is a vector image format, which means it describes curves that compose an image. By contrast, PNM is a raster format, which means it describes dots that compose an image. The main practical difference between the two types is that you can scale vector images better. A vector image also takes a lot less data to describe an image if the image is composed of simple curves.

That means it is really an understatement to say that pamtosvg is an image format converter. It’s really an image tracer. Its main job is to trace a raster image and find the lines in it. It then represents its findings in SVG format.

pamtosvg does the same kind of thing that StreamLine, CorelTrace, and Autotrace do. It is in fact derived from Autotrace.

SVG is a gigantic format, capable of amazing things. pamtosvg exploits only a morsel of it. The SVG image produced by pamtosvg consists of a single <svg> element, which has a ’width’ attribute and a ’height’ attribute. The value of that element is composed of <path> elements. That’s it.

In the SVG output, distances are unitless, with one unit corresponding to one pixel of the input.

So that pamtosvg will find simple curves in the image, you may want to remove speckles from it with pbmclean and consolidate multiple shades into single colors with pnmquant first.

For more information on SVG, see ("") the Worldwide Web Consortium’s SVG web page .



Treat the specified color as the background color and ignore it.

If you don’t specify this option, pamtosvg does not recognize any background color.

Specify the color (colorname) as described for the ("libppm.html#colorname") argument of the ppm_parsecolor() library routine .


Trace an object’s centerline.

By default, pamtosvg traces an object’s outline.


Consider any angle at a pixel which falls below angle angle (in decimal floating point degrees) as a corner, even if it is bordered by other corner pixels. Default is 60 degrees.


Consider the specified number of pixels on either side of a point when determining if that point is a corner. Default is 4.


Consider any pixel which forms an angle with its predecessors and successors that is smaller than angle (in decimal floating point degrees) as a corner. Default is 100.


Subdivide fitted curves that are offset by a number of pixels exceeding the specified number. Default is 2.0.


Smooth the curve the specified number of times prior to fitting Default is 4.


When a spline is closer to a straight line than the specified real number weighted by the square of the curve length, maintain it as a straight line, even if it is a list with curves.

Default is .01.


If a spline does not deviate from the straight line defined by its endpoints by more than the specified number of pixels, then treat it as a straight line.

Default is 1.


Create a log of the curve tracing process (suitable for debugging). Put it in the file named inputfile.log in the current directory, where inputfile is the root of the input file name, or ’pamtosvg’ if the input is from Standard Input or a file with a weird name.


Preserve line width prior to thinning. Meaningful only with -centerline.


Remove adjacent corners.


Report the progress of the tracing to Standard Error as it happens.


Consider the specified number of points to either side of a point when computing the tangent at that point. Default is 3.


Weight factor for fitting the linewidth.

Application Notes

A convenient way to view an SVG document is with a web browser. Many understand a file whose name ends in ’.svg’ to be an SVG image and can render it.


pnmquant(1) , pbmclean(1) , pnm(5) , ("") Autotrace


pamtosvg was added to Netpbm in Version 10.33 (March 2006).

The core of pamtosvg -- the curve tracing logic -- was taken nearly unmodified from Martin Weber’s Autotrace program. That program duplicates a lot of Netpbm function, so pamtosvg is a much leaner program.

Bryan Henderson created pamtosvg, basically just by adapting Autotrace to Netpbm.

Autotrace was first released in 2000 and updates were released through 2002. A number of people wrote the code in it, but Masatake Yamato and Martin Weber appear to be the principal creators of it.

As of June 2006, there was a ("") Sourceforge project for it.


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.