PyAccess module provides a CFFI/Python implementation of the PixelAccess Class. This implementation is far faster on PyPy than the PixelAccess version.
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.
The following script loads an image, accesses one pixel from it, then changes it.
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.
px[-1,-1] = (0,0,0) print (px[-1,-1])