指南

Stable Diffusion 与 ComfyUI 的 PNG 参数块

本地生成工具把完整提示词、采样器、种子和模型名写进 PNG 文本块。认识 parameters、prompt、workflow 三种块,就能一眼判断出处。

PNG 文本块是什么

PNG 允许在图像数据之外放任意键值对文本,块类型是 tEXt(Latin-1)、iTXt(UTF-8)和 zTXt(压缩)。生成工具就用它来记录生成参数,方便日后复现。

AUTOMATIC1111 / Forge / SD.Next

键名 parameters,值是一段多行文本:

a cat sitting on a windowsill, masterpiece, best quality
Negative prompt: blurry, lowres
Steps: 28, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1234567890, Size: 832x1216, Model hash: 31e35c80fc, Model: animagineXL_v31, VAE: sdxl_vae.safetensors, Version: v1.9.4

第一行是正向提示词,Negative prompt: 开头的是负向提示词,最后一行是逗号分隔的参数。Model: 后面的模型名和 Model hash: 可以进一步查到具体是哪个 checkpoint。

保存为 JPEG 时,同样的文本会写进 EXIF 的 UserComment。

ComfyUI

写两个块:

  • prompt:JSON,节点 ID 到节点定义的映射,包含 class_type(如 KSampler、CheckpointLoaderSimple)和输入参数。
  • workflow:JSON,完整的画布工作流,可以直接拖回 ComfyUI 复现。

两个块同时存在,几乎可以肯定是 ComfyUI 生成或经过 ComfyUI 处理。

NovelAI

写在 Comment 块里,值是 JSON,特征字段是 "uc"(undesired content,即负向提示词)、"steps"、"sampler"。同时 Software 块写 NovelAI。

InvokeAI、Fooocus、Draw Things 等

各有各的键名,多数包含 invokeai_metadata、fooocus_scheme 或者在 parameters 里带上工具名。AuditImage 对这些工具名做了关键字匹配。

AuditImage 怎么识别

  • parameters 块存在:标记为 Stable Diffusion WebUI 参数,并提取 Model: 后面的模型名。
  • prompt 与 workflow 同时存在:标记为 ComfyUI 工作流。
  • Comment 块中含 "uc"::标记为 NovelAI。
  • 所有块的内容都会在「PNG 文本块」一栏原样列出。

会丢失吗

会。任何重新编码都会丢掉 PNG 文本块,包括转成 JPEG、WebP,或经过大多数社交平台。有些工具的「导出」也会去掉。所以看到一张没有任何元数据的 PNG,不能反推它不是 AI 生成的。

手动查看

exiftool -a -G1 -s -PNG:all image.png
# 或者
python -c "from PIL import Image; print(Image.open('image.png').text)"