运行PIL处理Base64图片代码时出现NameError: name 'data' is not defined错误
解决NameError问题的小技巧
嘿,这问题其实很容易搞定!你碰到的NameError: name 'data' is not defined有两个关键原因:
- 第一个是你直接给
data['img']赋值,但data这个字典根本没被创建——Python不知道data是什么,自然会报错。 - 第二个是就算你定义了
data,原来代码里base64.b64decode(data)这一步也错了,应该解码的是data['img']对应的字符串,而不是整个字典。
下面给你两种修正后的可行代码:
方法一:先初始化字典再赋值
from PIL import Image from io import BytesIO import base64 # 先创建一个空字典data data = {} data['img'] = '''R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw==''' # 解码data里的img字段 im = Image.open(BytesIO(base64.b64decode(data['img'])))
方法二:直接使用字符串变量(更简洁)
如果不需要用字典存储的话,直接把Base64字符串存成变量更省事:
from PIL import Image from io import BytesIO import base64 img_base64 = '''R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw==''' im = Image.open(BytesIO(base64.b64decode(img_base64)))
这样修改后,代码就能正常运行,不会再报NameError啦~
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

