You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python PIL修改图像像素时遇“image index out of range”错误求助

解决PIL修改图像像素时的"out of range"错误

嘿,我一眼就发现你代码里的问题啦——你把图像宽高的循环范围搞反了!

问题根源

PIL中Image.size返回的是**(宽度, 高度)**的元组,也就是说:

  • x轴(横向)的像素范围是0到largeur-1(宽度值减1)
  • y轴(纵向)的像素范围是0到longueur-1(高度值减1)

但你写的循环里,让y遍历range(largeur)(宽度的范围),x遍历range(longueur)(高度的范围),这就导致当y的取值超过图像实际高度时,访问(x,y)这个坐标就会触发"out of range"错误——因为这个像素点根本不存在!

另外还有个小细节:最后一行的picture_2.show少了括号,应该写成picture_2.show(),不然不会执行显示图像的操作。

修正后的代码

from PIL import Image
picture_1 = Image.open("test.jpg")
largeur, longueur = picture_1.size  # largeur=宽度(x轴范围),longueur=高度(y轴范围)
print(largeur,"*",longueur)
picture_2 = Image.new("RGB", (largeur, longueur))
# 修正循环:y遍历高度范围,x遍历宽度范围
for y in range(longueur) :
    for x in range(largeur) :
        # 如果你需要基于原图像像素修改,可以取消下面注释:
        # r, v, b = picture_1.getpixel((x,y))
        # 目前你用的是固定值,保留即可
        r = 154 ; v = 152 ; b = 100
        picture_2.putpixel((x,y), (r, v, b))
picture_2.save("test2.jpg")
picture_2.show()  # 补上缺失的括号

这样修改后,循环就会遍历图像的所有合法像素坐标,不会再出现范围错误啦~

内容的提问来源于stack exchange,提问作者Louise D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:14:35