2010-08-29 15 views

Antwort

20

Um auf das in Gabi Purcarus link angegebene Beispiel aufzubauen, ist hier etwas aus der PIL docs zusammengeschustert.

Der einfachste Weg, um ein einzelnes Pixel zuverlässig zu modifizieren PIL wären mit:

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

dass 1.1.6 in PIL arbeiten und höher. Wenn Sie das Pech haben, eine ältere Version unterstützen zu müssen, können Sie die Leistung opfern und pix[x, y] = value durch im.putpixel((x, y), value) ersetzen.

+5

+1 für 'NotImplementedError' – heltonbiker

Verwandte Themen