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

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

19
задан rectangletangle 29 August 2010 в 20:18
поделиться

1 ответ

В качестве примера, приведенного в ссылке Габи Пуркару, вот кое-что собранное из документов PIL.

Самый простой способ надежно изменить один пиксель с помощью PIL:

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")

Это будет работать в PIL 1.1.6 и выше. Если вам не повезло с поддержкой более старой версии, вы можете пожертвовать производительностью и заменить pix[x, y] = value на im.putpixel((x, y), value) .

22
ответ дан 30 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: