单个像素的颜色可以通过 getpixel()和putpixel()方法取得和设置。它们都接受一个元
组,表示像素的 x 和y 坐标。putpixel()方法还接受一个元组,作为该像素的颜色。这个顔色参数是四整数 RGBA 元组或三整数 RGB 元组。在交互式环境中输入以下代码:
➊ >>> im = Image.new('RGBA', (100, 100))
➋ >>> im.getpixel((0, 0)) (0, 0, 0, 0)
➌ >>> for x in range(100):
for y in range(50):
➍ im.putpixel((x, y), (210, 210, 210))
>>> from PIL import ImageColor
➎ >>> for x in range(100):
for y in range(50, 100):
➏ im.putpixel((x, y), ImageColor.getcolor('darkgray',
'RGBA'))
>>> im.getpixel((0, 0))
(210, 210, 210, 255)
>>> im.getpixel((0, 50))
(169, 169, 169, 255)
>>> im.save('putPixel.png')
在➊,我们得到一个新图像,这是一个 100×100 的透明正方形。对一些坐标调用
getPixel()将返回(0,0,0,0),因为图像是透明的➋。要给图像中的像素上色,我们可以使用嵌套的 for
循环,遍历图像上半部分的所有像素➌,用 putpixel()设置每个像素的顔色➍。这里我们向 putpixel()传入 RGB
元组(210,210,210),即浅灰色。
假定我们希望图像下半部分是暗灰色,但不知道深灰色的 RGB 元组。putpixel()方法不接受'darkgray'这样的标准颜色名称,所以必须使用
ImageColor.getcolor()来获得 'darkgray'的颜色元组。循环遍历图像的下半部分像素➎,向 putpixel()传入ImageColor.
getcolor()的返回值➏,你现在应该得到一个图像,上半部分是浅灰色,下半部分是深灰色,如图 17-10 所示。可以对一些坐标调用
getPixel(),确认指定像素的颜色符合你的期望。最后,将图像存入putPixel.png。
当然,在图像上一次绘制一个像素不是很方便。如果需要绘制形状,就使用本章稍后介绍的 ImageDraw 函数。