2010-08-29 67 views

回答

20

要以Gabi Purcaru的link中給出的示例爲基礎,請從PIL docs拼湊一些東西。

最簡單的方法來使用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和後續工作。如果您不幸支持舊版本,則可能會犧牲性能,並用im.putpixel((x, y), value)替換pix[x, y] = value

+5

+1對於'NotImplementedError' – heltonbiker 2011-09-28 16:19:44

相關問題