dga*_*ma3 46 python python-imaging-library
我正在使用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')
Run Code Online (Sandbox Code Playgroud)
但是我收到此错误: TypeError: 'tuple' object does not support item assignment
Pet*_*rin 46
PIL像素是元组,元组是不可变的.你需要构造一个新的元组.所以,而不是for循环,做:
pixels = [(pixel[0] + 20, pixel[1], pixel[2]) for pixel in pixels]
image.putdata(pixels)
Run Code Online (Sandbox Code Playgroud)
此外,如果像素已经太红,则添加20将溢出该值.你可能想要min(pixel[0] + 20, 255)或者int(255 * (pixel[0] / 255.) ** 0.9)代替pixel[0] + 20.
并且,为了能够处理许多不同格式image = image.convert("RGB")的图像,请在打开图像后进行处理.的转换方法将确保像素是始终(R,G,B)的元组.
第二行应该是pixels[0],有一个S.你可能有一个名为元组pixel,元组是不可变的.改为构造新像素:
image = Image.open('balloon.jpg')
pixels = [(pix[0] + 20,) + pix[1:] for pix in image.getdata()]
image.putdate(pixels)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124428 次 |
| 最近记录: |