1AutoTrace is a utility for converting bitmap into vector graphics. 2 3Features 4======== 5- tracing outline and midline 6- color reduction and despeckling 7- supports a lot of input and output format 8 9Licenses 10======== 11The program can be used under the GNU General Public License. 12 13The input and output functions (input-*.[ch] and output-*.[ch]) 14can also be used under the GNU Lesser General Public License(LGPL). 15 16Some of code was partially derived from limn of GNU fontutils. 17However, almost all code is rewritten. 18 19Platforms 20========= 21The program was tested using GNU/Linux, HP UX, Solaris, Windows98, 22Windows NT, Windows 2000, MAC and OS/2 4.0. It compiles with GCC, 23Borland C++ Builder, Visual C++ and many other compilers. 24 25If you use Visual C++ 6.0 for compilation be sure to have at 26least SP 5 otherwise you could get Memory access violations due to 27a bug in earlier versions. 28 29Requirements 30============ 31AutoTrace can be compiled standalone, then it can import pnm, pbm, 32pgm, ppm, bmp and tga files. If you have installed libpng 33(http://www.libpng.org/pub/png/libpng.html) you can also read png 34files and with ImageMagick a very broad range of input formats is 35available. 36 37You will need at least libpng 1.0.6 and ImageMagick 5.2.1. Most 38output formats like dxf, emf, eps, ai, er, fig, svg, epd, dr2d and sk 39are directly integrated in AutoTrace, but if you need swf export you 40need to install Ming (http://www.opaque.net/ming/). Also you can 41export to the p2e format. This format can be converted by pstoedit 42(www.pstoedit.net) to a large number of other formats. If you have 43installed the latest pstoedit(3.32 or newer), autotrace uses pstoedit 44directly. However, direct pstoedit support is not stable enough. 45See INSTALL file for more detail. 46 47Installation 48============ 49See the file INSTALL. 50 51Usage 52===== 53Program comes from two parts: command and library. 54 55Here the options you can use in the command: 56 Usage: autotrace.exe [options] <input_name>. 57 Options:<input_name> should be a supported image. 58 You can use `--' or `-' to start an option. 59 You can use any unambiguous abbreviation for an option name. 60 You can separate option names and values with `=' or ` '. 61 background-color <hexadecimal>: the color of the background that 62 should be ignored, for example FFFFFF; 63 default is no background color. 64 centerline: trace a character's centerline, rather than its outline. 65 color-count <unsigned>: number of colors a color bitmap is reduced to, 66 it does not work on gray scale, allowed are 1..256; 67 default is 0, that means not color reduction is done. 68 corner-always-threshold <angle-in-degrees>: if the angle at a pixel is 69 less than this, it is considered a corner, even if it is within 70 `corner-surround' pixels of another corner; default is 60. 71 corner-surround <unsigned>: number of pixels on either side of a 72 point to consider when determining if that point is a corner; 73 default is 4. 74 corner-threshold <angle-in-degrees>: if a pixel, its predecessor(s), 75 and its successor(s) meet at an angle smaller than this, it's a 76 corner; default is 100. 77 despeckle-level <unsigned>: 0..20; default is no despeckling. 78 despeckle-tightness <real>: 0.0..8.0; default is 2.0. 79 dpi <unsigned>: The dots per inch value in the input image, affects scaling 80 of mif output image 81 error-threshold <real>: subdivide fitted curves that are off by 82 more pixels than this; default is 2.0. 83 filter-iterations <unsigned>: smooth the curve this many times 84 before fitting; default is 4. 85 input-format: TGA, PBM, PNM, PGM, PPM or BMP. 86 help: print this message. 87 line-reversion-threshold <real>: if a spline is closer to a straight 88 line than this, weighted by the square of the curve length, keep it a 89 straight line even if it is a list with curves; default is .01. 90 line-threshold <real>: if the spline is not more than this far away 91 from the straight line defined by its endpoints, 92 then output a straight line; default is 1. 93 list-output-formats: print a list of support output formats to stderr. 94 list-input-formats: print a list of support input formats to stderr. 95 log: write detailed progress reports to <input_name>.log. 96 output-file <filename>: write to <filename> 97 output-format <format>: use format <format> for the output file 98 output-format <format>: use format <format> for the output file 99 eps, ai, p2e, sk, svg, fig, swf, emf, mif, er, dxf, epd, pdf, cgm or dr2d 100 can be used. 101 preserve-width: whether to preserve line width prior to thinning.\n\ 102 remove-adjacent-corners: remove corners that are adjacent. 103 tangent-surround <unsigned>: number of points on either side of a 104 point to consider when computing the tangent at that point; default is 3. 105 report-progress: report tracing status in real time. 106 debug-arch: print the type of cpu. 107 debug-bitmap: dump loaded bitmap to <input_name>.bitmap. 108 version: print the version number of this program. 109 width-weight-factor: weight factor for fitting the line width. 110 111The library is named libautotrace. About the usage of the library 112see autotrace.h. 113Here is a sample program that uses libautotrace. 114To compile, invoke following commands (on posix): 115gcc sample.c `./autotrace-config --libs` `./autotrace-config --cflags` 116 117 /* sample.c */ 118 #include <autotrace/autotrace.h> 119 120 int main() 121 { 122 char * fname = "img/triangle.png"; 123 at_fitting_opts_type * opts = at_fitting_opts_new(); 124 at_input_read_func rfunc = at_input_get_handler(fname); 125 at_bitmap_type * bitmap ; 126 at_splines_type * splines; 127 at_output_write_func wfunc = at_output_get_handler_by_suffix("eps"); 128 129 bitmap = at_bitmap_read(rfunc, fname, NULL, NULL, NULL); 130 splines = at_splines_new(bitmap, opts, NULL, NULL); 131 at_splines_write(wfunc, stdout, "", NULL splines, NULL, NULL); 132 return 0; 133 } 134 135GUI Frontend 136============ 137Frontline, a Gtk+/Gnome based GUI frontend, is under development. 138See http://autotrace.sourceforge.net/frontline 139 140autotrace mailing list is used to discuss frontline. See next. 141 142More Information 143================ 144See http://autotrace.sourceforge.net 145 146There is a mailing list to discussion autotrace. 147See also http://groups.yahoo.com/group/autotrace/ 148 149Contribution 150============ 151Programmers wanted!!! 152 153See TODO and HACKING file and contact the author. 154 155Author 156====== 157Martin Weber (martweb@gmx.net) 158