使用PIL生成图片网格仅显示首行问题求助
问题原因及修复方案
问题根源
你的代码中,x变量在完成首行图片粘贴后,已经累加到2000(等于画布宽度)。后续外层循环每次增加y值时,x没有被重置为0,内层while x<2000的条件直接不成立,导致后续行完全不会执行粘贴操作,因此只有首行显示图片。
修复后的代码
def create_grid(im2,w,h): image = Image.new("RGBA",(2000,1000),(0,0,0)) y = 0 x_change = int(2000/w) y_change = int(1000/h) while y<1000: x = 0 # 每次绘制新行时重置x坐标到画布左侧 while x<2000: image.paste(im2,(x,y)) x += x_change y += y_change image.show()
额外说明
- 将
x = 0移至外层循环内部,确保每开始一行的绘制,x坐标都从0重新起步。 - 你传入的参数
create_grid(im2,20,10)对应每行20张、共10行,计算出的x_change=100、y_change=100刚好和im2的100x100尺寸匹配,不会出现图片重叠或间隙问题。
内容的提问来源于stack exchange,提问作者poka luka wan
相关产品推荐
相关产品推荐

