Pypotrace
Python bindings for potrace library
Install / Use
/learn @flupke/PypotraceREADME
potrace Python bindings
These bindings provide an object oriented API to the potrace_ library.
The full API documentation is on <https://pythonhosted.org/pypotrace/>_.
Example usage
The bindings work with input images represented as numpy arrays::
import numpy as np
import potrace
# Make a numpy array with a rectangle in the middle
data = np.zeros((32, 32), np.uint32)
data[8:32-8, 8:32-8] = 1
# Create a bitmap from the array
bmp = potrace.Bitmap(data)
# Trace the bitmap to a path
path = bmp.trace()
# Iterate over path curves
for curve in path:
print "start_point =", curve.start_point
for segment in curve:
print segment
end_point_x, end_point_y = segment.end_point
if segment.is_corner:
c_x, c_y = segment.c
else:
c1_x, c1_y = segment.c1
c2_x, c2_y = segment.c2
Installation
Ubuntu
Install system dependencies::
$ sudo apt-get install build-essential python-dev libagg-dev libpotrace-dev pkg-config
Install pypotrace::
$ git clone https://github.com/flupke/pypotrace.git
$ cd pypotrace
$ pip install numpy
$ pip install .
CentOS/RedHat
Install system dependencies::
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install agg-devel potrace-devel python-devel
Install pypotrace::
$ git clone https://github.com/flupke/pypotrace.git
$ cd pypotrace
$ pip install numpy
$ pip install .
OSX
Install system dependencies::
$ brew install libagg pkg-config potrace
Install pypotrace::
$ git clone https://github.com/flupke/pypotrace.git
$ cd pypotrace
$ pip install numpy
$ pip install .
Windows
Thanks to klonuo <https://github.com/klonuo>_ for the instructions
Here are instruction how to make this package work on Windows, by using MinGW system. Probably it can be done with Visual Studio, but I lack skills to make such magic.
So assuming user has MinGW available, additional two packages are needed:
- potrace source: http://potrace.sourceforge.net/#downloading
- agg source: http://www.antigrain.com/download/index.html
I extracted both packages in my C:\src folder. Both are easy to build by
executing ./configure; make and ./autogen.sh; make respectively, on
MSYS prompt.
After that, we need some variables to build pypotrace successfully:
First, includes paths:
- "numpy/arrayobject.h":
C:/Python27/Lib/site-packages/numpy/core/include - potrace headers:
C:/src/potrace-1.11/src - agg headers:
C:/src/agg-2.5
there is a little catch for agg includes, as paths referenced in cpp sources
point to agg2/*.h while in downloaded agg package we don't have agg2
folder. For me it was easiest to rename C:/src/agg-2.5/include to
C:/src/agg-2.5/agg2 and use C:/src/agg-2.5 as agg include folder.
Next, libdirs for libraries we build above:
- potrace:
C:/src/potrace-1.11/src/.libs - agg:
C:/src/agg-2.5/src
and we can make pypotrace build command, and execute it::
python setup.py build_ext -IC:/Python27/Lib/site-packages/numpy/core/include;C:/src/potrace-1.11/src;C:/src/agg-2.5 -LC:/src/potrace-1.11/src/.libs;C:/src/agg-2.5/src
Finally install the package::
C:\src\git\pypotrace>python setup.py install
running install
running build
running build_py
copying potrace\__init__.py -> build\lib.win32-2.7\potrace
copying potrace\agg\__init__.py -> build\lib.win32-2.7\potrace\agg
running build_ext
skipping 'potrace\_potrace.c' Cython extension (up-to-date)
skipping 'potrace\bezier.cpp' Cython extension (up-to-date)
skipping 'potrace/agg\curves.cpp' Cython extension (up-to-date)
running install_lib
creating C:\Python27\Lib\site-packages\potrace
creating C:\Python27\Lib\site-packages\potrace\agg
copying build\lib.win32-2.7\potrace\agg\curves.pyd -> C:\Python27\Lib\site-packages\potrace\agg
copying build\lib.win32-2.7\potrace\agg\__init__.py -> C:\Python27\Lib\site-packages\potrace\agg
copying build\lib.win32-2.7\potrace\bezier.pyd -> C:\Python27\Lib\site-packages\potrace
copying build\lib.win32-2.7\potrace\_potrace.pyd -> C:\Python27\Lib\site-packages\potrace
copying build\lib.win32-2.7\potrace\__init__.py -> C:\Python27\Lib\site-packages\potrace
byte-compiling C:\Python27\Lib\site-packages\potrace\agg\__init__.py to __init__.pyc
byte-compiling C:\Python27\Lib\site-packages\potrace\__init__.py to __init__.pyc
running install_egg_info
Writing C:\Python27\Lib\site-packages\pypotrace-0.1-py2.7.egg-info
Running tests
You can check everything is working correctly by running the tests::
$ pip install '.[dev]'
$ nosetests -v
Documentation
The documentation is hosted here: http://packages.python.org/pypotrace
A copy is also included in the doc/_build/html directory of the source
distribution.
Homepage
This project is hosted on github: http://github.com/flupke/pypotrace
.. _potrace: http://potrace.sourceforge.net/
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
