仅按image.show()保存上次显示的PIL图像

2024-04-20 05:35:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试将图像保存到一个特定的目录中,该目录由下面的列表生成。我能够生成img.show()显示的位图图像,但当我尝试将其保存到指定目录时,它只保存最后一个图像中的一个。我搜索了各种其他类似的问题,除了在https://stackoverflow.com/a/56237732/13648455中有点帮助外,没有对我的问题增加任何帮助。我可能在代码中遗漏了一些小东西。我正在使用Jupyter笔记本运行我的代码

arrays = [[1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0,
       0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1,
       0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0,
       1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0,
       1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

arr = np.array(arrays)

def image_creator(image_array):
    count = 0
    image_array = image_array.reshape(2, 51)
    img = Image.new('1', (2, 51))
    pixels = img.load()
    new_list = image_array.tolist()
    
    for i in range(img.size[0]):
        
        for j in range(img.size[1]):
            
            pixels[i, j] = new_list[i][j]
            
            save_dir = '{Insert Directory}'
    
    img.show()
    
    img.save(f'{save_dir}/Example_{count}.bmp')
    count += 1
    
    
    return img


x = map(image_creator, arr)
print(list(x))