.. py:module:: PIL.PyAccess
.. py:currentmodule:: PIL.PyAccess

:py:mod:`~PIL.PyAccess` Module
==============================

The :py:mod:`~PIL.PyAccess` module provides a CFFI/Python implementation of the :ref:`PixelAccess`. This implementation is far faster on PyPy than the PixelAccess version.

.. note:: Accessing individual pixels is fairly slow. If you are
          looping over all of the pixels in an image, there is likely
          a faster way using other parts of the Pillow API.

          :mod:`~PIL.Image`, :mod:`~PIL.ImageChops` and :mod:`~PIL.ImageOps`
          have methods for many standard operations. If you wish to perform
          a custom mapping, check out :py:meth:`~PIL.Image.Image.point`.

Example
-------

The following script loads an image, accesses one pixel from it, then changes it.

.. code-block:: python

    from PIL import Image

    with Image.open("hopper.jpg") as im:
        px = im.load()
    print(px[4, 4])
    px[4, 4] = (0, 0, 0)
    print(px[4, 4])

Results in the following::

    (23, 24, 68)
    (0, 0, 0)

Access using negative indexes is also possible.

.. code-block:: python

    px[-1, -1] = (0, 0, 0)
    print(px[-1, -1])



:py:class:`PyAccess` Class
--------------------------

.. autoclass:: PIL.PyAccess.PyAccess()
    :members:
