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

运行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:30