繁体   English   中英

如何解决“ IndexError:图像索引超出范围”?

[英]How to fix “IndexError: image index out of range”?

我在用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))

您的图像宽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))

是的,您犯了一个小错误,交换了列循环和行循环控制值。 互换循环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))

暂无
暂无

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

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