Is it possible to change the color of one individual pixel in Python?

后端 未结 1 1753
时光取名叫无心
时光取名叫无心 2020-12-11 00:20

I need python to change the color of one individual pixel on a picture, how do I go about that?

相关标签:
1条回答
  • 2020-12-11 00:51

    To build upon the example given in Gabi Purcaru's link, here's something cobbled together from the PIL docs.

    The simplest way to reliably modify a single pixel using PIL would be:

    x, y = 10, 25
    shade = 20
    
    from PIL import Image
    im = Image.open("foo.png")
    pix = im.load()
    
    if im.mode == '1':
        value = int(shade >= 127) # Black-and-white (1-bit)
    elif im.mode == 'L':
        value = shade # Grayscale (Luminosity)
    elif im.mode == 'RGB':
        value = (shade, shade, shade)
    elif im.mode == 'RGBA':
        value = (shade, shade, shade, 255)
    elif im.mode == 'P':
        raise NotImplementedError("TODO: Look up nearest color in palette")
    else:
        raise ValueError("Unexpected mode for PNG image: %s" % im.mode)
    
    pix[x, y] = value 
    
    im.save("foo_new.png")
    

    That will work in PIL 1.1.6 and up. If you have the bad luck of having to support an older version, you can sacrifice performance and replace pix[x, y] = value with im.putpixel((x, y), value).

    0 讨论(0)
提交回复
热议问题