如何修复“ IndexError:图像索引超出范围”?

时间:2019-06-25 01:20:27

标签: python-3.x python-imaging-library

我正在编写此代码,以解决用Python自动完成无聊的事情中的问题。该代码应创建一个全黑的新图像,然后在其中心放置一个灰白色矩形,并留一个黑色边框。在测试这部分代码时,在下面的代码摘录的最后一行出现了错误IndexError: image index out of range

我发现了许多其他问题来解决此错误消息,但似乎没有任何解决方案相关。我要求为似乎上色的像素范围位于图像的矩形内。我觉得我在这里错过了一些非常简单的事情。

baseIm = Image.new('RGBA', (298, 370), 'black')
for x in range(5, 365):
    for y in range(5, 293):
        baseIm.putpixel((x, y), (239, 222, 205))

2 个答案:

答案 0 :(得分:1)

您的图像宽298像素(尺寸x),高370像素(尺寸y)。 该代码超出范围,因为它尝试设置图像外部的像素-您使x通过range(5, 365)

您为什么不在代码中使用baseIm.widthbaseIm.height?像这样:

baseIm = Image.new('RGBA', (370, 298), 'black')
for x in range(5, baseIm.width-5):
    for y in range(5, baseIm.height-5):
        baseIm.putpixel((x,y), (239, 222, 205))

答案 1 :(得分:1)

是的,您犯了一个小错误,交换了列循环和行循环控制值。互换循环x和y的两种范围方法的极限。

baseIm = Image.new('RGBA', (298, 370), 'black')
for x in range(5, 293):
    for y in range(5, 365):
        baseIm.putpixel((x, y), (239, 222, 205))