调用Image.load(img)报错module 'PIL.Image' has no attribute 'load'如何解决
错误产生原因
PIL.Image模块不存在顶层的load()方法,load()是Image实例对象的成员方法,仅可通过已经初始化的图片对象调用,直接调用Image.load()属于访问模块不存在的属性,因此触发AttributeError。- 补充说明:
load()方法的作用是将已打开的图片的像素数据加载到内存,本身不具备从路径/字节流读取图片文件的能力。
解决方法
根据你的使用场景选择对应写法:
场景1:从本地文件路径加载图片
首先调用Image.open()读取本地文件得到Image实例,按需调用实例的load()方法即可:
from PIL import Image # 读取本地图片得到Image实例 image = Image.open("你的图片文件路径.jpg") # 若需要直接操作像素,调用实例的load()方法获取像素矩阵 pixel_matrix = image.load() # 后续可通过pixel_matrix[横坐标,纵坐标]读取/修改对应位置的像素值
如果仅需要对图片做裁剪、缩放、格式转换等操作,无需主动调用load(),PIL会在需要用到像素数据时自动触发加载逻辑。
场景2:加载内存中的二进制图片流
若你传入的img参数是内存中的字节流对象,使用如下写法:
from PIL import Image import io # 将字节流封装为可读取的文件对象后传入Image.open image = Image.open(io.BytesIO(img)) # 按需调用load方法 pixel_matrix = image.load()
内容的提问来源于stack exchange,提问作者Ismail Hasan Sarker
相关产品推荐
相关产品推荐

