COMFYUI 基礎 · 第 12 課

從 PNG 找回工作流:看懂中繼資料與分享邊界

用三張像素相同的非 AI 測試 PNG,練習恢復畫布、排查遺失的資料與輸入圖,最後整理可重做、可檢查的工作流分享包。

  • 零基礎實作
  • 30–45 分鐘;不需下載模型 · 閱讀與練習
  • 發布

開始前,準備這些

  • 已有可開啟的 ComfyUI,會用 Open 載入 JSON 並保存目前畫布
  • 知道 Load Image 和 Save Image;可先複習第七課
  • 準備一個練習資料夾,不使用私人或他人的未授權照片

這一課,你會學會

  • 分清 PNG 像素、workflow 畫布資料與 prompt 執行資料
  • 比較完整、純像素與選做 prompt-only 三種 PNG 的載入差異
  • 恢復畫布後重新提供輸入圖,不把 JSON 當成包含素材的備份
  • 檢查備註、檔名和依賴,保留原稿並整理分享副本
本課目錄

圖片還在,為什麼工作流找不回來?

第十一課把影片影格存成 PNG,也提醒分享前檢查中繼資料。這一課把這件事做完整:圖片看起來相同,不代表檔案裡保存了相同的工作流。

我們用三張 640×480、RGB 像素完全相同的測試圖,練習從圖片找回畫布、分辨缺少資料與缺少輸入素材,最後整理一份能說清楚用途的分享包。這一課不需要生成新角色。

素材與驗證範圍: 本課圖片由本站以 CPU 程式原創繪製,並刻意加入或省略工作流資料,屬於格式測試素材。不是 AI 生成圖,也不是 ComfyUI 工作流執行結果。 我們核對了官方程式與檔案結構;尚未在 ComfyUI GUI 匯入或執行。下方「應該看到」是依原始碼預期的行為,請用自己的觀察填表,不要把教材檢查當成自己已實跑。

第 0 步:下載練習包,先保護目前的畫布

  1. 下載第十二課練習包 ZIP,完整解壓縮到新的 lesson-12 資料夾
  2. 先把目前 ComfyUI 的作品匯出成一般工作流 JSON,確認存好,再開新的空白工作流。不同版本可能顯示 Workflow/Workflows/File → New
  3. 開啟練習包的 observations.csv;可以用試算表或文字編輯器。三列初始狀態都是 not_run(未執行);執行成功填 success,執行失敗填 failed。B 只做載入觀察,run_status 保留 not_run 就好
  4. 本課沒有模型權重、自訂節點、登入或付費 API。若你現在沒有可用的 ComfyUI,可以先閱讀和下載,實作狀態保留未執行,不必為這課購買服務

練習包中最重要的檔案:

檔案用途
lesson-12-with-workflow.pngA:帶完整畫布 workflow 與執行資料 prompt 的測試圖
lesson-12-pixels-only.pngB:只保留圖片像素,不含 workflow、prompt、parameters
lesson-12-prompt-only.pngC:選做,只帶執行資料 prompt
lesson-12-source-card.png真正要在 Load Image 上傳的輸入圖,本身沒有工作流
lesson-12-recovery-workflow.json一般畫布格式的獨立備份,不是 API 格式
observations.csv、README.txt觀察紀錄、操作摘要與素材授權

先分清兩種操作: 把 A 拖到畫布是「嘗試恢復工作流」;在 Load Image 節點的上傳按鈕選 source-card 才是「提供輸入圖」。不要互相替代。

三種測試PNG的像素相同:A含workflow和prompt可恢復畫布,B兩者都沒有成為普通素材,C只有prompt可能恢復執行節點
本站原創對照圖,不是 ComfyUI 截圖。C 的載入結果與前端版本有關;先完成 A、B 主線即可。點圖查看原尺寸。

第 1 步:用 A 圖恢復兩節點畫布

  1. 在新的空白工作流,將 lesson-12-with-workflow.png 拖到中央畫布。若拖曳沒有載入,試 File/Workflow → Open 選取原始 PNG
  2. 檢查是否出現 Load Image → Save Image,兩者以 IMAGE 連接
  3. 找到下方 Note。第一行應是「教學示範備註,不含私人資料」
  4. 先不要執行。在 observations.csv 的 A 列填 observed_canvas、note_visible,記錄你實際看見什麼

應該看到: 兩個執行節點、一條連線,以及一個沒有接線的 Note。Load Image 記著 lesson-12-source-card.png;Save Image 的 filename_prefix 是 lesson12/recovered。

若只出現一張圖片或新的 Load Image,先核對你開的是 A 原始 PNG,不是 B、source-card、網頁截圖或被其他軟體轉存的副本。可以改開一般工作流 JSON比較;這只能幫你確認畫布,不能證明 PNG 中繼資料載入成功。

workflow 和 prompt 各保存什麼?

  • workflow:畫布資料。包含節點、連線、位置、設定,還可能包括沒有參與執行的 Note
  • prompt:執行資料。描述要執行的節點類型與輸入;這裡的 prompt 不只是平常填的「正向提示詞」
  • 圖片像素:看得見的結果。光看像素,無法知道原本用了哪些節點或設定

A 同時包含前兩項。本課核對的前端會優先載入 workflow;不能把「沒有 workflow」直接等同「一定不能恢復任何節點」,因為有效的 prompt 仍可能觸發 API 格式載入。後面的選做 C 會示範這個差別。官方前端載入順序

最小恢復練習的接線示意:Load Image的IMAGE連到Save Image,未接線的Note也在workflow裡;JSON只記錄輸入檔名而不包含圖片本體
本站原創接線示意,不是介面截圖。英文名稱對應 JSON;Note 雖不執行,也屬於可被分享的畫布內容。

第 2 步:畫布找回來了,還要提供輸入圖

JSON 記錄檔名,不會把輸入圖的圖片本體一起包進去。別人的檔案名稱出現在下拉選單,不表示你的執行環境已經有那張圖。

  1. 在 Load Image 使用 choose file to upload/上傳圖片,選解壓縮後的 lesson-12-source-card.png
  2. 確認節點預覽是本課綠色圓臉與黃色文字牌。若伺服器因同名檔案加了尾碼,請重新選取這次實際上傳的檔案,不要只照抄教材檔名
  3. 核對 Save Image 的前綴 lesson12/recovered,再按 Run/Queue 一次
  4. 執行成功後,保存自己產生的 PNG,再匯出一般工作流 JSON,命名 my-lesson-12-recovered.json
  5. 在 A 列填 input_reselected、output_filename(實際完整輸出檔名)、comfyui_version、frontend_version 與 run_status;只有成功執行才填 success

應該得到: 一張 640×480 的圖,內容仍是同一張來源卡。這條流程沒有模型、沒有取樣器,也沒有重新生成畫面。輸出通常在 ComfyUI/output/lesson12/,後面另加流水號;修改過輸出目錄或雲端託管環境時,以自己的下載介面為準。

存得出 PNG,不表示一定有工作流 metadata。 Save Image 是否收到完整 workflow、伺服器是否停用 metadata,都會影響它寫入什麼。先保存自己的原始 PNG 和 JSON,再於新的工作流試著重開 PNG,在 png_reopen_result 記下是否恢復完整畫布。不要承諾自己的 PNG 檔案雜湊與教材相同。固定版本 SaveImage 實作

第 3 步:用 B 圖找出「外觀相同」的陷阱

  1. 再保存並離開剛才的工作,開另一張空白工作流
  2. 將 lesson-12-pixels-only.png 拖到空白畫布
  3. 比較 A:有沒有完整兩節點連線?Note 還在嗎?把實際結果填進 B 列

B 的檔案已確認不含 workflow、prompt、parameters。本課核對的前端會把這類 PNG 當普通媒體,建立 Load Image 輸入,而不是恢復本課兩節點畫布;舊版可能顯示不同提示。它不是損壞的圖片,只是沒有這些恢復資料。 不需要為了這個現象安裝擴充。

A、B 的解碼像素完全相同,檔案內容卻不同。截圖、社群平台壓縮、格式轉換或圖片編輯器重新存檔,可能移除或改寫 metadata;不是每個程式、每次轉存都一定會移除。改副檔名也不能補回已遺失的資料。

如果是自己的作品遺失資料

先找自己保存的一般工作流 JSON、原始輸出檔或仍可用的歷史紀錄。若只剩純像素圖,不能從圖中精確還原 seed、提示詞、節點設定與原來的連線。不要把猜測的設定寫成已恢復的結果。

第 4 步:選做 C,只剩 prompt 會怎樣?

想完成主線的人可以直接跳到分享檢查。若繼續,先開新的空白工作流,再載入 lesson-12-prompt-only.png。

本課核對的前端會在缺少 workflow 時,嘗試以有效的 API prompt 建立執行節點。可能看到 Load Image 與 Save Image,但不應把它當成完整畫布備份:本課 C 根本沒有保存 Note、原本節點標題或畫布位置,不能要求它重現 A 的排版。

舊版若未支援同樣的 fallback,結果可能不同。在 C 列填 comfyui_version、frontend_version,並把看見的節點與提示寫入 observed_canvas 或 notes 即可,不要只為完成選做更換整套環境。C 若要執行,仍須在 Load Image 重新選取自己的 source-card 輸入檔。

第 5 步:分享前檢查內容,也檢查能否重做

A 圖裡的 Note 是普通教學文字。這件事提醒我們:沒有參與執行的備註,也可能跟著完整 workflow 寫進 PNG。 提示詞、檔名、節點標題、路徑或其他節點設定,也可能帶出你不想公開的資訊。

不要用「圖片上看不到」判斷是否安全。不要把私人檔案上傳到陌生的中繼資料檢查網站。本課所有假設測試只用公開教材素材。

先分成自己保留版與分享副本

  1. 保留原始 PNG、JSON 和輸入素材,不覆蓋唯一備份
  2. 另存要分享的工作流副本,逐一查看 Note、提示詞、檔名、節點標題、群組與設定;只保留確定能公開的內容
  3. 即使只想分享圖片,也要檢查可見畫面及檔案裡的其他 metadata。刪除 Note 或拿掉 workflow/prompt,不等於已清除所有私人資料
  4. 私人檔案的 metadata 清理操作不在本課範圍內。 這裡只練習辨認風險與整理公開教材。若你另行用熟悉的圖片工具製作副本,仍需用可信的本機工具驗證;不能確認時,就不要把私人原檔當成已清理版本送出。本課提供的 B 是已檢查教材,不能替你證明其他檔案安全

不要把再經 Save Image 存一次當成清除方法。 這個節點可能把當次工作流重新寫入輸出。官方也提供啟動時停用 metadata 的設定,但它影響後續輸出,不能回頭清掉舊檔;本課不用修改啟動設定。官方 metadata 說明與限制

做出你的最小分享包

本課練習可以在自己的 lesson-12 資料夾新建 share-copy,放入:

  • my-lesson-12-share.json:檢查後另存的一般工作流 JSON
  • 實際使用的 source-card 輸入圖:記錄名稱與上傳後可能產生的差異
  • README.txt:用途、操作步驟、ComfyUI/前端版本、是否實跑,以及原創素材的來源與授權
  • 選填:示範輸出 PNG:只加入已檢查、確定可以分享的副本

先不發給別人。在另一個空白工作流打開 JSON、重新選取輸入圖,確認連線與設定,實際成功執行後才記錄「可重做」。這只證明你這個環境的結果,不保證別人的版本也成功。

未來分享生成模型工作流時,還要記錄模型名稱、版本、下載來源、自訂節點來源及必要設定;不要把模型權重、他人照片或其他無權分發的素材直接打包。工作流 metadata 不是數位簽章,也不能證明作者或內容沒有被改過。

分享前的三道檢查:先檢查內容與分享權限,再備妥一般JSON、輸入素材與版本,最後另開畫布重做並如實記錄是否執行
本站原創檢查圖。分享副本與自己保留的原稿分開;不把「沒有看見私人資訊」當成完整安全驗證。

常見問題

原圖有 workflow,但匯入後出現缺失節點?

恢復畫布不會自動安裝節點。先核對檔案來源及版本;本課只有 LoadImage、SaveImage 與 Note,不應需要陌生擴充。遇到其他工作流時,不要只因出現 Missing Nodes 就自動安裝套件,先確認信任來源及需求。

把 JSON 的檔名改對了,為什麼仍找不到圖片?

文字相同不會傳送檔案。必須透過 Load Image 上傳到當前執行環境,並選取那裡實際存在的素材。恢復資料不是搬移硬碟、雲端資料夾或模型環境。

圖片內容一樣,SHA-256 為什麼不同?

檔案雜湊會把 metadata、壓縮方式等位元組都算進去;相同像素仍可能得到不同雜湊。教材的素材紀錄用來核對下載檔是否改動,不用來要求自己的輸出逐位元相同。

PNG 中的 prompt 就是我的正向提示詞嗎?

在這裡不是。它是整份執行圖的 JSON,可以含多個節點與輸入。本課沒有文字生圖節點,仍然有名為 prompt 的資料。不要只搜尋一段正向文字,就以為已檢查完整 metadata。

完成檢查

  • 我已保存原本畫布,使用獨立工作流比較 A、B
  • 我能指出 A 的兩個執行節點與 Note,知道它們來自 workflow
  • 我已在 Load Image 上傳並選取真正的輸入圖;沒有把記錄的檔名當成素材本體
  • 我知道 B 沒有恢復資料,但仍是有效圖片;C 是選做,不能代表完整畫布
  • 我有自己的 PNG、一般 JSON 與觀察紀錄,未實跑的項目仍寫 not_run
  • 我知道分享前要檢查看得見的內容、metadata、依賴及使用權限

下載、來源與授權

本課原創圖片、測試素材與教材工作流採 CC BY 4.0,使用時標示「綠豆 AI,第 12 課」並註明是否修改。官方程式碼不包含在公開練習包內,仍依各原專案授權。