ComfyUI v0.14.2 发布:修复 Gemini/Nano banana 节点空白图像问题,

ComfyUI v0.14.2 发布:修复 Gemini/Nano banana 节点空白图像问题,全新 MIME 匹配机制登场

1. 更新目标:解决 Gemini/Nano API 空白图像问题
在此前版本中,ComfyUI 的 API 节点在处理 Gemini 模型生成的内容时,偶尔会出现返回空白图像的情况。这个问题主要出现在节点对返回的 MIME 类型进行匹配的过程中,系统仅能识别具体的字符串类型(如 "image/png"),而无法通配或灵活识别其他类型,例如 "image/jpeg" 或 "image/webp" 等。

此问题导致部分模型生成的图片未能正确提取和呈现,严重影响使用体验。

v0.14.2 版本针对这一问题进行了根本性的技术改进,通过使用 glob(通配符)匹配机制,使 MIME 类型匹配更加灵活和智能,从而彻底解决这一潜在漏洞。

2. 代码关键改动:增加 _mime_matches 函数
在 comfy_api_nodes/nodes_gemini.py 文件中新增了如下逻辑:

def _mime_matches(mime: GeminiMimeType | None, pattern: str) -> bool:
    """Check if a MIME type matches a pattern. Supports fnmatch globs (e.g. 'image/*')."""
    if mime is None:
        return False
    return fnmatch(mime.value, pattern)
这一函数通过引入 Python 标准库 fnmatch 模块,实现了基于通配符的 MIME 字符串匹配。
从原先的严格字符串等值判断,演进为支持标准通配表达式,如:

• "image/*" —— 匹配所有图像类型;
• "text/*" —— 匹配所有文本类型;
• "application/*" —— 匹配所有应用数据类型。
这样一来,当 Gemini 模型在返回数据时使用不同的 MIME 描述(例如某些模型可能返回 "image/jpeg" 或 "image/webp"),程序都可以自动识别并正确提取图像数据,极大提升了兼容性与稳定性。

3. 函数 get_parts_by_type 改进:全面采用 _mime_matches 匹配机制
在此函数中,原本用于判断 MIME 类型的逻辑为直接字符串比较:

elif part.inlineData and part.inlineData.mimeType == part_type:
新的代码将其改为:

elif part.inlineData and _mime_matches(part.inlineData.mimeType, part_type):
同样地,文件数据部分也采用相同逻辑:

elif part.fileData and _mime_matches(part.fileData.mimeType, part_type):
这意味着无论数据是 inlineData(内嵌数据) 还是 fileData(文件数据),都能通过灵活的模式匹配来识别不同类型的输入内容。

这一步调整是本次更新的核心,它直接关联到 Gemini 节点的图像提取逻辑,也是解决空白图像问题的根本。

4. 函数 get_image_from_response 改进:支持所有图像类型
此前版本中,程序仅从响应中提取 "image/png" 类型的内容:

parts = get_parts_by_type(response, "image/png")
但由于很多模型会生成多种不同格式的图像,因此新版将其改为:

parts = get_parts_by_type(response, "image/*")
这意味着系统现在可以从返回的任何图像类型(包括 JPEG、WEBP、GIF、TIFF 等)中识别并提取图像数据,大幅度提升兼容性与处理效率。

这一调整配合 _mime_matches 函数的通配符匹配机制,可视为一次重要的底层增强,为未来扩展更多的模型支持打下了坚实基础。
#大模型# #福大大架构师每日一题#
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务