Ho bisogno di python per cambiare il colore di un singolo pixel su un'immagine, come faccio a farlo?È possibile cambiare il colore di un singolo pixel in Python?
18
A
risposta
20
Per basarsi sull'esempio di Gabi Purcaru link, ecco qualcosa di accartocciato dallo PIL docs.
Il modo più semplice per modificare in modo affidabile un singolo pixel utilizza PIL sarebbe:
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")
che funzionerà in PIL 1.1.6 e superiori. Se si ha la sfortuna di dover supportare una versione precedente, è possibile sacrificare le prestazioni e sostituire pix[x, y] = value
con im.putpixel((x, y), value)
.
+5
+1 per 'NotImplementedError' – heltonbiker
utilizza la libreria PIL – akonsu
@akonsu: a giudicare dai suoi tag ha già trovato quella libreria ... –
quale formato di file? solo dati bitmap? – Nate