Search code examples
pythongraphicsrgbpixel

How to read the RGB value of a given pixel in Python?


If I open an image with open("image.jpg"), how can I get the RGB values of a pixel assuming I have the coordinates of the pixel?

Then, how can I do the reverse of this? Starting with a blank graphic, 'write' a pixel with a certain RGB value?

I would prefer if I didn't have to download any additional libraries.


Solution

  • It's probably best to use the Python Image Library to do this which I'm afraid is a separate download.

    The easiest way to do what you want is via the load() method on the Image object which returns a pixel access object which you can manipulate like an array:

    from PIL import Image
    
    im = Image.open('dead_parrot.jpg') # Can be many different formats.
    pix = im.load()
    print im.size  # Get the width and hight of the image for iterating over
    print pix[x,y]  # Get the RGBA Value of the a pixel of an image
    pix[x,y] = value  # Set the RGBA Value of the image (tuple)
    im.save('alive_parrot.png')  # Save the modified pixels as .png
    

    Alternatively, look at ImageDraw which gives a much richer API for creating images.