概要
ComfyUI が出力ファイルを保存するとき、そのファイルを生成したワークフローをファイル自体の中に保存できます。 これは、生成済み画像をレシピと一緒に保存するようなものと考えられます。画像が結果であり、埋め込まれたワークフローがその作成に使用された手順を説明します。 埋め込まれたワークフローメタデータを使用すると、以下のことが可能になります:- 生成済みファイルを ComfyUI で再度開き、ワークフローを復元する。
- 生成済みファイルを、その作成に使用されたワークフローと一緒に共有する。
- 自動化されたワークフローで生成設定を検査する。
- 出力ファイルから ComfyUI ワークフローメタデータを読み取るツールを構築する。
埋め込みフィールド
ComfyUIは通常、2つのJSONフィールドを保存します:
簡略化した例は次のようになります:
extra_pnginfoを通じてフィールドを追加することもできます。
この2つのフィールドは用途が異なります。workflow はフロントエンドでワークフローを復元するために使用します。prompt は実行用の形式で、ComfyUI サーバーにワークフローを送信するときに使用します。ファイルにどちらか一方のフィールドしか含まれない場合もあります。
サポートされている形式
組み込みの保存ノードは、以下の出力形式にメタデータを埋め込みます:
正確なメタデータのサポートは、保存ノードとファイルの書き込みパスによって異なります。別のアプリケーションで再エンコードされたファイルには、メタデータが含まれなくなる場合があります。
Animated WebP ファイルは、値を EXIF タグに保存します。タグには
workflow:{JSON} や prompt:{JSON} のような文字列が含まれます。これは、値をコンテナのメタデータタグに保存する MP4 や WebM とは異なります。
ComfyUIがメタデータを書き込む方法
組み込みの出力ノードは、ComfyUIがワークフローを実行する際に、APIプロンプトと追加のワークフロー情報を受け取ります。メタデータの保存が無効化されていない限り、保存ノードはこれらの値をJSONとしてシリアライズし、出力ファイルに書き込みます。 PNG出力の場合、値はテキストエントリとして書き込まれます。標準のフィールド名はprompt と workflow です。
メタデータは別のサイドカーファイルではありません。保存処理中に出力ファイル自体へ書き込まれます。そのため、ファイルをコピーすると埋め込まれたワークフローもコピーされますが、ファイルを書き換える操作によってメタデータが削除または置換される場合があります。
ComfyUIの起動時にメタデータを無効化するには、次のコマンドを使用します:
ComfyUIがメタデータを読み取る方法
ComfyUIインターフェースでワークフローを復元するには、生成済みファイルをキャンバスにドラッグします。File > Open からファイルを開くこともできます。 ファイルにworkflowとpromptの両方が含まれている場合、ComfyUIは埋め込まれたworkflowを使用してキャンバスを再構築します。ファイルにワークフローが含まれていない場合、ComfyUIは対応するメディアファイルを通常の入力メディアとして扱います。
インテグレーションを構築するときは、解析する前にフィールドの存在を確認してください。--disable-metadata を使用して作成されたファイル、保存ノードにワークフロー情報が渡されなかったファイル、または別のアプリケーションで再エンコードされたファイルには、メタデータが存在しない場合があります。
埋め込まれたワークフローをブラウザで確認または編集するには、ComfyUI Embedded Workflow Editor を使用できます。このエディターはオプションです。ComfyUI でワークフローを復元したり、プログラムからメタデータを読み取ったりするために必要ではありません。
PythonでPNGメタデータを読み取る
次の例では、PNGファイルから標準フィールドを読み取ります。Image.info を通じて公開します。値は JSON 文字列なので、Python オブジェクトとして使用する前に json.loads を呼び出してください。
コマンドラインからPNGメタデータを読み取る
ImageMagickを使用してPNGテキストメタデータを検査できます:workflowとpromptテキストエントリを探してください。
ビデオメタデータの読み取り
ComfyUIは、MP4およびWebM出力のコンテナメタデータにワークフローメタデータを保存します。これらのフィールドはffprobeで確認できます:
.webmファイルのパスを指定して同じコマンドを使用します:
workflowタグとpromptタグの値を解析します。
WebPメタデータの読み取り
ComfyUI は Animated WebP ファイルのメタデータを EXIF タグに保存します。Pillow でタグを読み取り、フィールドのプレフィックスを取り除いて JSON を解析できます。潜在メタデータの読み取り
.latent ファイルは safetensors 形式を使用します。メタデータは safetensors Python パッケージで読み取ることができます:
workflow と prompt の値が存在する場合は、JSON として解析してください。
どの形式でも、メタデータは任意であり、信頼できない入力として扱ってください。使用前に値が有効な JSON か検証し、ワークフローに実行に必要なすべてのモデルやカスタムノードが含まれているとは限りません。
制限事項
- 埋め込みメタデータはデジタル署名ではありません。誰がファイルを作成または変更したかを証明するものではありません。
- ワークフローには、依存するモデルファイル、入力アセット、カスタムノードパッケージは含まれません。
- モデル、入力アセット、またはカスタムノードを移動または名前変更すると、復元されたワークフローが実行できなくなる可能性があります。
- 画像エディタやビデオエディタは、ファイルを再エンコードする際にメタデータを削除する場合があります。
--disable-metadataを指定して作成されたファイルには、スタンダードなComfyUIワークフローメタデータは含まれません。