Python Pillow的Image.load()方法是否有使用限制?索引越界是什么原因
问题原因说明
这个错误和Image.load()本身的限制无关,是你访问像素的坐标顺序写反了。
Pillow 像素访问规则
img.size的返回值格式为(宽度, 高度),对应水平方向总像素数、垂直方向总像素数,你当前的图片宽1024、高768img.load()返回的像素对象,索引规则是pixels[水平坐标x, 垂直坐标y]:- 第一个参数x是列号,取值范围是
0 ~ 宽度-1,对应你代码里的col变量 - 第二个参数y是行号,取值范围是
0 ~ 高度-1,对应你代码里的row变量
- 第一个参数x是列号,取值范围是
你代码里写的pixels[row, col]把行号、列号的位置写反了,把最大可达1023的列号传给了仅支持最大767的y坐标位置,自然会抛出索引越界错误。
修复后的代码
from PIL import Image with Image.open('nature.jpg') as img: print("Image size is : " ,img.size) pixels = img.load() with open('file.txt', 'w') as file: for row in range(img.height): for col in range(img.width): # 调整坐标顺序即可 file.write(str(pixels[col, row])+ ' ') file.write('\n')
内容的提问来源于stack exchange,提问作者Veerendra Singh
相关产品推荐
相关产品推荐

