我正在使用PIL库。

我正在尝试使图像看起来红色,这就是我所拥有的。

from PIL import Image
image = Image.open('balloon.jpg')
pixels = list(image.getdata())
for pixel in pixels: 
    pixel[0] = pixel[0] + 20    
image.putdata(pixels)
image.save('new.bmp')

但是我遇到了这个错误:TypeError: 'tuple' object does not support item assignment

答案

PIL像素是元组,元素是不变的。您需要构建一个新的元组。因此,代替循环,请做:

pixels = [(pixel[0] + 20, pixel[1], pixel[2]) for pixel in pixels]
image.putdata(pixels)

另外,如果像素已经太红了,则添加20将溢出值。你可能想要类似的东西min(pixel[0] + 20, 255)或者int(255 * (pixel[0] / 255.) ** 0.9)代替pixel[0] + 20

并且,为了能够处理多种不同格式的图像,请执行以下操作image = image.convert("RGB")打开图像后。这转变方法将确保像素始终是(r,g,b)元组。

来自: stackoverflow.com