# `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, the current version 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=0)

  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