ComfyUI 的 Load Image 节点是工作流中最常用的图片输入入口之一,但不少用户在本地文件明明存在的情况下仍然看到“Failed to load image”或“File not found”的报错。这类问题如果只盯着节点本身排查,很容易走进死胡同,因为它大多不是节点逻辑错误,而是路径字符串在操作系统与 Python 之间传递时出现了编码偏差,或者图片所在目录的权限设置阻止了进程读取。下面先梳理根因,再给出可操作的修复顺序。

一、路径中文编码如何导致 Load Image 节点找不到文件
ComfyUI 基于 Python 构建,Python 3 内部统一使用 Unicode 字符串来保存路径,但在 Windows 平台调用文件系统接口时,会依赖系统的 ANSI 代码页或 UTF-8 模式。如果用户把图片放在类似 D:\素材\角色\正脸.png 这样的目录下,界面输入框里的中文字符串经过前端、后端传递后,最终可能以 GBK 字节序列被解释成 UTF-8,或者反过来,于是路径字符串就变成了一堆乱码。Load Image 节点内部先调用 os.path.exists 做存在性检查,如果编码已经错乱,这个检查必然返回 False,节点随后抛出 FileNotFoundError。
实际报错信息里经常能看到类似内容:FileNotFoundError: [Errno 2] No such file or directory: 'D:\\素材\\角色\\正脸.png'。注意这里的路径在日志里显示正常,是因为日志模块已经按当前终端编码做了渲染,真正传给文件系统的字符串可能已经损坏。另一个常见现象是,在 Windows 资源管理器里复制路径后粘贴到 ComfyUI,路径中的中文变成问号或方框,这也说明字符串编码环节出了问题。
import os
import sys
# 在 ComfyUI 内置 Python 环境下运行,观察文件系统编码
image_path = r"D:\素材\角色\正脸.png"
print("Python 文件系统编码:", sys.getfilesystemencoding())
print("路径是否存在:", os.path.exists(image_path))
print("路径字符串:", image_path)
上面的脚本可以帮助确认当前 Python 进程使用的文件系统编码。如果输出为 utf-8,并且路径存在但仍加载失败,说明问题可能在权限或其他环节;如果输出为 cp936 或 mbcs,同时路径含中文且返回 False,就需要优先处理编码模式。
二、修复中文路径编码问题的几种有效做法
最稳妥的方法是把 Windows 系统的 UTF-8 支持打开。进入控制面板的“区域”设置,在“管理”选项卡中点击“更改系统区域设置”,勾选“Beta 版:使用 Unicode UTF-8 提供全球语言支持”,然后重启系统。这个开关会让操作系统默认使用 UTF-8 作为 ANSI 代码页,能明显减少 Python 文件系统接口中的中文路径乱码。但开启后个别老软件可能出现兼容性问题,如果环境允许,建议优先使用这种方式。
如果不想改动系统设置,可以在启动 ComfyUI 的批处理或命令行中设置环境变量。以 Windows 便携版为例,修改启动脚本 run_nvidia_gpu.bat 或直接新建一个 bat 文件,内容如下。
@echo off set PYTHONUTF8=1 set PYTHONIOENCODING=utf-8 cd /d C:\ComfyUI_windows_portable call python_embeded\python.exe -s main.py pause
保存后从该脚本启动 ComfyUI,Python 会以 UTF-8 模式处理文件系统路径。与此同时,建议路径书写时统一使用正斜杠,例如 D:/素材/角色/正脸.png,这样能避免反斜杠在字符串中被当作转义符处理。Load Image 节点支持绝对路径,也支持相对 input 目录的文件名,但相对路径不要包含 ../ 之类跳转,部分版本解析时会出问题。
还有一种临时方案是把中文目录重命名为拼音或英文,例如将 D:\素材\角色 改成 D:\sucai\juese。这不是技术修复,但确实能绕开编码问题,适合不想动系统设置的用户。需要注意的是,修改目录名后,ComfyUI 里已经保存的工作流路径也要同步更新,否则还会继续报找不到文件。
三、文件权限不足导致读取失败的表现与修复
当路径编码没有问题,但 Load Image 节点仍然提示无法加载图片时,下一步要检查的是文件权限。Windows 下如果图片所在目录被设置为仅管理员可读,而 ComfyUI 以普通权限运行,就会收到 PermissionError: [Errno 13] Permission denied。这类报错通常不会直接显示在节点红框里,而是出现在后台控制台。用户可以打开 ComfyUI 的启动窗口,观察加载图片时是否刷出权限错误。
修复 Windows 权限的方法是右键点击图片所在文件夹,选择属性,进入安全选项卡,确认当前用户或 Users 组拥有“读取和执行”“列出文件夹内容”“读取”三项权限。如果没有,点击编辑,添加 Users 组并勾选读取权限,然后应用。对于单个文件,也可以直接右键文件属性做同样操作。如果希望整棵目录树统一调整,可以使用 PowerShell 命令。
icacls "D:\素材\角色" /grant Users:(OI)(CI)R /T
Linux 系统下则用 chmod 和 chown 处理。首先确认 ComfyUI 运行用户对图片路径有读权限,通常执行 chmod -R u+rwX /data/images 即可。如果目录属于 root,需要先 chown 给当前用户。macOS 则需要检查“系统设置-隐私与安全性-文件和文件夹”里是否有对终端或 Python 的读取限制。
权限问题还有一个隐蔽变体:文件本身只读属性并不影响读取,但如果文件正在被其他程序独占打开,例如图片在 Photoshop 中编辑且未关闭,Windows 可能拒绝 ComfyUI 读取。此时应关闭占用程序,或将图片另存后再加载。
四、用脚本快速定位编码与权限问题
为了减少来回试错,可以准备一段独立的 Python 排查脚本,放到 ComfyUI 的 Python 环境中直接运行。脚本会依次输出文件系统编码、路径是否存在、文件是否可读,并尝试读取前 64 字节。根据输出结果就能判断是路径写错、编码异常还是权限拦截。
import os
import sys
from pathlib import Path
image_path = r"D:\素材\角色\正脸.png"
p = Path(image_path)
print("系统默认编码:", sys.getfilesystemencoding())
print("路径字符串:", image_path)
print("存在?", p.exists())
print("是文件?", p.is_file())
if p.exists():
try:
with open(p, "rb") as f:
data = f.read(64)
print("可读? True,前16字节:", data[:16])
except Exception as e:
print("读取失败类型:", type(e).__name__)
print("错误详情:", e)
else:
print("路径不存在,请检查中文编码、路径分隔符或文件是否被移动")
如果脚本输出“路径不存在”,优先按第二节设置 UTF-8 环境变量;如果输出“路径存在”但“读取失败类型: PermissionError”,则重点排查文件权限和目录 ACL。定位到具体原因后再修复,比直接重装或盲目更换路径高效得多。
还需要注意 Load Image 节点本身对文件格式的依赖。ComfyUI 使用 PIL 读取图片,某些 WebP 或特殊色彩空间的 PNG 可能因编解码器缺失而失败,这时报错信息会包含 cannot identify image file。遇到这种情况,可以先用系统自带图片查看器打开并另存为 PNG 或 JPG,通常就能被 Load Image 正常识别。
ComfyUI Load Image节点中文编码文件权限修改时间:2026-09-21 02:38:06