Introduction ============ ``py_gd`` is a set of "Pythonic" bindings to the libgd rendering library ``py_gd`` aims to provide nice Pythonic wrappers around libgd -- a robust, fast, and simple drawing lib: ``https://github.com/libgd/libgd/`` Why gd? ------- For the project at hand we needed fast and simple drawing -- 8-bit color, no anti-aliasing. We also wanted a nice simple API to work with. There are a number of newer drawing libs (AGG, Skia) that produce some pretty results, but are not as simple to use, and are focused on 32 bit fully anti-aliased drawing. If you want the prettiest rendering possible, I encourage you to check those out. If you want something fast and simple -- `py_gd` may be for you. General Structure ----------------- ``py_gd`` provides an Object-Oriented interface for rendering. At the core is the ``Image`` class -- it gets created with a given set of parameters, at least the size of the image:: img = Image(width=400, height=400) once created, you can draw to with a variety of drawing functions:: img.draw_line((1, 1), (350, 200), color='red', line_width=3) Drawing of an object is usually accomplished with a single call -- you can set the properties of the object you want to draw all at once: color, line width, etc. The image can be saved out in various formats:: img.save('my_image.png', 'png') Parameters of Drawing --------------------- Depending on the object being drawn, there are a number of parameters that can be set: For Lines: .......... | ``color``: string color name | ``line_width``: integer pixels For Solid Color Objects: ........................ | ``color``: string color name For Objects with a Line and Fill: ................................. | ``line_color``: string color name | ``fill_color``: string color name | ``line_width``: integer pixels For Objects Defined at a Single Point ..................................... | ``point``: (x, y) tuple (or other 2-sequence) For Objects Defined at a Multiple Points ........................................ Polygon, Polyline | ``points``: sequence of points: ``[(x1, y1), (x2, y2), (x3, y3), ...]`` (Nx2 numpy array) For Objects with a Width or Height: ................................... | ``width``: integer pixels | ``height``: integer pixels