繁体   English   中英

枕头/ PIL Python-仅第一行写入图像

[英]Pillow/PIL Python - only first row written to image

我正在尝试创建一个Perlin噪声应用程序,该应用程序会随机生成一个游戏地图。 我正在尝试写入新图像,但是只写入了第一行。

这是我创建的存根,它存在相同的问题:

from PIL import Image
from random import randint

height = 25
width = 25

z = randint(-1000, 1000) / 100

img = Image.new('RGBA', (width, height), color=(255, 255, 255, 255))

for y in range(height):
    img.putdata([(0,255,0,255) for x in range(width)]) # Logic error occurs on this line
img.save("location.png", "PNG")

我这次犯了什么愚蠢的错误?

好吧,您需要一个填充整个图像的序列。 每次调用putdata从0,0开始,因此您每次都从0,0到序列末尾进行写入。 通过执行以下操作,获得足以填充整个图像的序列:

height = 25
width = 25
data = [255 * randint(-1000, 1000) / 100 for x in range(width * height)]

然后,您可以像这样使用putdata:

img = Image.new('RGBA', (width, height), color=(255, 255, 255, 255))
img.putdata(data)
img.save("location.png", "PNG")

您必须通过以下方式提供像素信息:

img.putdata([(0,255,0, 255) for x in range(width) for y in range(height)])

您提供信息的方式将创建25个子列表,每个25个元素,而该功能需要625个元素,而没有任何子列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM