Python 3.x 如何使用python使用PIL修改图像并将其附加到列表末尾?

Python 3.x 如何使用python使用PIL修改图像并将其附加到列表末尾?,python-3.x,python-imaging-library,rgb,Python 3.x,Python Imaging Library,Rgb,使用for循环,我试图修改图像的颜色值,然后将修改后的图像副本附加到列表中。每次运行for循环时,列表中的所有图像都会被修改,而不是for循环生成一个新的副本,并附加到列表的末尾。因此,所有图像最终看起来都像for循环的最后一次迭代。我目前的代码如下。请告知 import PIL from PIL import Image from PIL import ImageEnhance pic=Image.open("pic.gif") pic=pic.convert('RGB') width, h

使用for循环,我试图修改图像的颜色值,然后将修改后的图像副本附加到列表中。每次运行for循环时,列表中的所有图像都会被修改,而不是for循环生成一个新的副本,并附加到列表的末尾。因此,所有图像最终看起来都像for循环的最后一次迭代。我目前的代码如下。请告知

import PIL
from PIL import Image
from PIL import ImageEnhance

pic=Image.open("pic.gif")
pic=pic.convert('RGB')
width, height = pic.size

pics=[]
for intens in [.1, .5, .9]:
    for x in range(pic.width):
        for y in range(pic.height):
            a = pic.getpixel((x,y))
            a = (int(a[0]*intens), a[1], a[2])
            pic.putpixel((x,y),a)
    pics.append(pic)

为了解决这个问题,我用另一个for循环包装了我的强度列表,以便在所有内容中再迭代3次

import PIL
from PIL import Image
from PIL import ImageEnhance

pic=Image.open("pic.gif")
pic=pic.convert('RGB')
width, height = pic.size

pics=[]
for i in range(3):
    for intens in [.1, .5, .9]:
        for x in range(pic.width):
            for y in range(pic.height):
                a = pic.getpixel((x,y))
                a = (int(a[0]*intens), a[1], a[2])
                pic.putpixel((x,y),a)
    pics.append(pic)

想想你实际创建了多少个
pic
tures。我发现我只修改了一个变量“pic”,并将该变量添加到列表“pics”中。如何将“pic”的副本添加到已修改且具有其唯一变量名的列表“pics”中?您正在尝试制作一个包含3个图像的列表,其中第一个图像的所有红色值除以10,第二个图像的所有红色值除以2,第三个图像的红色值乘以0.9。对吗?对!我相信我只是将同一张图片添加到列表中3次,然后修改3次你好,请在代码中添加一些上下文。帮助解释为什么这是一个好的解决方案,以及它如何帮助OP解决他们的问题,以及帮助那些遇到此线程的人理解您的代码正在做什么以及它如何完成手头的任务。您可能还想阅读这篇关于堆栈溢出的文章