Skip to content
Back to top
View this page

# `ImagePath` module

The `ImagePath` module is used to store and manipulate 2-dimensional vector data. Path objects can be passed to the methods on the `ImageDraw` module.

class PIL.ImagePath.Path

  A path object. The coordinate list can be any sequence object containing either 2-tuples [(x, y), …] or numeric values [x, y, …].

  You can also create a path object from another path object.

  In 1.1.6 and later, you can also pass in any object that implements Python’s buffer API. The buffer should provide read access, and contain C floats in machine byte order.

  The path object implements most parts of the Python sequence interface, and behaves like a list of (x, y) pairs. You can use len(), item access, and slicing as usual. However, this does not support slice assignment, or item and slice deletion.

  Parameters:

    xy – A sequence. The sequence can contain 2-tuples [(x, y), …] or a flat list of numbers [x, y, …].

PIL.ImagePath.Path.compact(distance=2)

  Compacts the path, by removing points that are close to each other. This method modifies the path in place, and returns the number of points left in the path.

  `distance` is measured as Manhattan distance and defaults to two pixels.

PIL.ImagePath.Path.getbbox()

  Gets the bounding box of the path.

  Returns:

    `(x0, y0, x1, y1)`

PIL.ImagePath.Path.map(function)

  Maps the path through a function.

PIL.ImagePath.Path.tolist(flat=False)

  Converts the path to a Python list [(x, y), …].

  Parameters:

    flat – By default, this function returns a list of 2-tuples [(x, y), …]. If this argument is `True`, it returns a flat list [x, y, …] instead.

  Returns:

    A list of coordinates. See `flat`.

PIL.ImagePath.Path.transform(matrix)

  Transforms the path in place, using an affine transform. The matrix is a 6-tuple (a, b, c, d, e, f), and each point is mapped as follows:

      xOut = xIn * a + yIn * b + c
      yOut = xIn * d + yIn * e + f