Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-PIL-缺少图像_Python_Python Imaging Library - Fatal编程技术网

Python-PIL-缺少图像

Python-PIL-缺少图像,python,python-imaging-library,Python,Python Imaging Library,尝试使用pil从图像创建类似网格的布局。但该代码只绘制第一列。有人能帮我吗 def draw(self): image=Image.new("RGB",((IMAGE_SIZE[0]+40)*5+40,(IMAGE_SIZE[1]+20)*CHILD_COUNT+20),(255,255,255)) paste_x=(-1)*IMAGE_SIZE[0] paste_y=(-1)*IMAGE_SIZE[1] i=0 for a range(5):

尝试使用pil从图像创建类似网格的布局。但该代码只绘制第一列。有人能帮我吗

def draw(self):
    image=Image.new("RGB",((IMAGE_SIZE[0]+40)*5+40,(IMAGE_SIZE[1]+20)*CHILD_COUNT+20),(255,255,255))
    paste_x=(-1)*IMAGE_SIZE[0]
    paste_y=(-1)*IMAGE_SIZE[1]
    i=0
    for a range(5):
        paste_x=paste_x+IMAGE_SIZE[0]+40
        j=0
        for b in range(4):
            paste_y=paste_y+IMAGE_SIZE[1]+20
            image.paste(Image.new("RGB",IMAGE_SIZE,(0,0,0)),(paste_x,paste_y))
            j=j+1
        i=i+1    
    out=NamedTemporaryFile(delete=False)
    path=out.name
    image.save(out, "PNG")
    out.close()
    print path
用于迭代行和列:

import tempfile
import Image
import itertools

COLUMNS=5
ROWS=5
VSEP=20
HSEP=40
IMAGE_SIZE=(100,100)

def draw():
    image=Image.new("RGB",
                    ((IMAGE_SIZE[0]+HSEP)*COLUMNS+HSEP,
                     (IMAGE_SIZE[1]+VSEP)*ROWS+VSEP),
                    (255,255,255))
    for row,column in itertools.product(range(ROWS),range(COLUMNS)):
        # print(row,column)  # uncomment this to see what itertools.product does
        paste_x=HSEP+column*(IMAGE_SIZE[0]+HSEP)
        paste_y=VSEP+row*(IMAGE_SIZE[1]+VSEP)
        image.paste(Image.new("RGB",IMAGE_SIZE,(0,0,0)),(paste_x,paste_y))
    out=tempfile.NamedTemporaryFile(delete=False)
    path=out.name
    image.save(out, "PNG")
    out.close()
    print path

draw()
此外,尽量不要使用太多硬编码的数字。如果你把数字放在变量中,那么你的代码就更容易修改,并且减少了潜在的错误

另外,我认为您发布的代码中的错误是您从未重置粘贴。 在完成第一列之后,
paste_y
的值继续增长, 因此,开始粘贴超出
图像下边缘的小图像


因此,您可以通过将
paste_y=-IMAGE_SIZE[1]
移动到
j=0
之后来解决此问题,但我仍然更喜欢按照上面的方式进行操作。

Python+
I=0
+
for
循环+
I=1
=谢谢。实际上这个函数是从其他函数中提取变量的,为了澄清这个问题,我删除了它们。这是我在stackoverflow.com上的第一个问题,我印象深刻:)。再次感谢。@user472416:欢迎来到stackoverflow!:)