我是python的新手,正在尝试学习pil。我想将每个像素的rgb值降低1。例如(100,239,54)应该是(99,238,53)。但是,一旦图片被保存,就没有我保存的像素值。但也与原始图片不一样。
from PIL import Image
img = Image.open('dog2.jpg', 'r')
imgdata = list(img.getdata())
print(imgdata[:5])
imgdata = [val for sublist in imgdata for val in sublist]
for i, pixbit in enumerate(imgdata):
imgdata[i] -= 1
imgdata = list(zip(*[iter(imgdata)]*3))
print(imgdata[:5])
newimg = Image.new(img.mode, img.size)
newimg.putdata(imgdata)
newimg.save('newimg.jpg')
img = Image.open('newimg.jpg', 'r')
print(list(img.getdata())[:5])
三个打印件:
[(36, 79, 86), (36, 79, 86), (36, 79, 86), (36, 79, 86), (37, 80, 87)]
[(35, 78, 85), (35, 78, 85), (35, 78, 85), (35, 78, 85), (36, 79, 86)]
[(36, 79, 88), (36, 79, 88), (36, 79, 88), (36, 79, 88), (36, 79, 88)]
最后一张应该与第二张相同。
有人可以向我解释为什么吗?谢谢!