gpt4 book ai didi

python - 如何从 Python 中的像素值列表创建 PNG 图像文件?

转载 作者:太空狗 更新时间:2023-10-30 00:55:08 24 4
gpt4 key购买 nike

我可以使用如下过程从现有图像文件生成像素值列表:

from PIL import Image
image = Image.open("test.png")
pixels = list(image.getdata())
width, height = image.size
pixels = [pixels[i * width:(i + 1) * width] for i in xrange(height)]

如何将这个像素值列表转换回图像文件?

最佳答案

快速修复

首先,您需要将像素元组放在一个未嵌套的列表中:

pixels_out = []
for row in pixels:
for tup in row:
pixels_out.append(tup)

接下来,使用输入图像的属性创建一个新的图像对象,并将数据放入其中:

image_out = Image.new(image.mode,image.size)
image_out.putdata(pixels_out)

最后保存一下:

image_out.save('test_out.png')

基本问题

您的列表理解生成列表列表,后者由切片生成 (i*width:(i+1)*width)。您的理解会容易得多:pixels = [pixel for pixel in pixels]。显然这会输出相同的列表,pixels,但是您可以使用这个想法对像素执行操作,例如pixels = [operation(pixel) for pixel in pixels].

真的,你想多了。您不必管理图像尺寸。获取列表中的像素,然后使用 putdata 将它们放入大小相等的图像中以保持顺序,因为它们通过 PIL 以相同的方式线性化。

简而言之,这就是您的原始代码段应该是这样的:

from PIL import Image
image = Image.open("test.png")
image_out = Image.new(image.mode,image.size)

pixels = list(image.getdata())
image_out.putdata(pixels)
image_out.save('test_out.png')

关于python - 如何从 Python 中的像素值列表创建 PNG 图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com