PIL 只生成网格的顶部行
我写了一个简单的程序,用PIL来生成一张图片网格,但它只生成了第一行,其他的都没有出来。以下是我的代码:
def create_grid(im2,w,h):
image = Image.new("RGBA",(2000,1000),(0,0,0))
x = 0
y = 0
x_change = int(2000/w)
y_change = int(1000/h)
while y<1000:
while x<2000:
image.paste(im2,(x,y))
x += x_change
y += y_change
image.show()
在这个例子中,im2
的大小是100x100,我调用了create_grid(im2,20,10)
。为什么只出现了第一行呢?
1 个回答
3
你在从第一行切换到第二行时,忘记把 x
坐标重置了。所以,接下来的图片都被放在了看不见的区域,x
的值大于2000。换句话说,x
的 while
条件再也不会满足了:根本没有其他图片被尝试放置。
只需要加一行 x = 0
就可以了:
def create_grid(im2,w,h):
image = Image.new("RGBA",(2000,1000),(0,0,0))
x = 0
y = 0
x_change = int(2000/w)
y_change = int(1000/h)
while y<1000:
while x<2000:
image.paste(im2,(x,y))
x += x_change
y += y_change
x = 0
image.show()