ComfyUI-SaveImageDPI

Save images as PNG / JPEG / TIFF / PSD with proper DPI metadata — plus %model% / %seed% filename tokens. Designed for print workflows (e.g. submitting 350dpi files to a print shop) without a round trip through Photoshop.

日本語READMEは下にあります

Features

  • 4 output formats: PNG, JPEG (quality setting), TIFF (LZW lossless), PSD (flat, 8-bit RGB)
  • DPI metadata written correctly for every format (default 72, up to 1200)
  • Filename tokens: %model%, %seed% anywhere in filename_prefix (plus ComfyUI's built-in %date:yyyyMMdd% etc.), subfolders supported
  • Clean sequence numbers: prefix_00001.png — like the stock Save Image node but without the trailing underscore
  • Workflow embedding in PNG (stock-compatible, respects --disable-metadata)

Why PSD DPI is written twice

Readers disagree on where a PSD's resolution lives:

Location Read by
ResolutionInfo (image resource 1005, per PSD spec) Photoshop, Clip Studio Paint, psd-tools
EXIF X/YResolution (image resource 1058) macOS ImageIO (Preview, Quick Look, sips) — it ignores 1005 entirely

This node writes both, so the file shows the correct DPI everywhere. (Verified empirically on macOS 2026-07: a PSD carrying only a spec-perfect 1005 resource is reported as 72dpi by sips, while adding 1058 fixes it.)

Install

cd ComfyUI/custom_nodes
git clone https://github.com/mzkmkgm22-sudo/ComfyUI-SaveImageDPI
pip install -r ComfyUI-SaveImageDPI/requirements.txt   # psd-tools

psd-tools is only needed for PSD output; PNG/JPEG/TIFF work without it.

Node: Save Image (DPI)

Input Type Default Notes
images IMAGE — batch → sequential files
filename_prefix STRING ComfyUI tokens + subfolders, e.g. art/%model%_%seed%
format choice png png / jpg / tiff / psd
dpi INT 72 1–1200
model_name STRING "" feeds %model% (path/extension stripped)
seed INT 0 feeds %seed%
quality INT 90 JPEG only
embed_workflow BOOL true PNG only

Example: filename_prefix = "print/%model%_%seed%" with anima_baseV10.safetensors and seed 123456 → output/print/anima_baseV10_123456_00001.psd

Tests

python tests/test_save_image_dpi.py   # or pytest — no ComfyUI required

License

MIT


日本語

PNG / JPEG / TIFF / PSD を正しい DPIメタデータ付きで保存するカスタムノードです。%model% / %seed% ファイル名トークンにも対応。印刷入稿(350dpi指定など)のためのPhotoshop往復をなくすことを目的としています。

機能

  • 4形式対応: PNG、JPEG(quality指定可)、TIFF(LZW可逆圧縮)、PSD(フラット・8bit RGB)
  • 全形式でDPIメタデータを正しく書き込み(既定72、最大1200)
  • ファイル名トークン: filename_prefix 内の任意の位置で %model% %seed%(ComfyUI標準の %date:yyyyMMdd% 等も併用可)、サブフォルダ対応
  • 連番がきれい: prefix_00001.png — 公式Save Imageの末尾アンダースコアを削除した形式
  • PNGへのワークフロー埋め込み(公式互換、--disable-metadata 尊重)

PSDのDPIを2箇所に書く理由

PSDの解像度情報は、読むソフトによって参照場所が異なります:

格納場所 読むソフト
ResolutionInfo(イメージリソース 1005、PSD仕様の正規位置) Photoshop、クリスタ、psd-tools
EXIF X/YResolution(イメージリソース 1058) macOS ImageIO(プレビュー、Quick Look、sips)— 1005を完全に無視します

本ノードは両方に書き込むため、どの環境で開いても正しいDPIが表示されます。(2026-07にmacOSで実測: 仕様通りの1005だけを持つPSDはsipsで72dpi扱いになり、1058を追加すると直る)

インストール

cd ComfyUI/custom_nodes
git clone https://github.com/mzkmkgm22-sudo/ComfyUI-SaveImageDPI
pip install -r ComfyUI-SaveImageDPI/requirements.txt   # psd-tools

psd-tools はPSD出力時のみ必要です(PNG/JPEG/TIFFだけなら不要)。

入力

入力 型 既定値 備考
images IMAGE — バッチは連番で複数ファイルに
filename_prefix STRING ComfyUI トークン・サブフォルダ可(例 art/%model%_%seed%)
format 選択式 png png / jpg / tiff / psd
dpi INT 72 1〜1200
model_name STRING "" %model% に入る(パス・拡張子は自動除去)
seed INT 0 %seed% に入る
quality INT 90 JPEG時のみ
embed_workflow BOOL true PNG時のみ

例: filename_prefix = "print/%model%_%seed%"、モデル名 anima_baseV10.safetensors、seed 123456 → output/print/anima_baseV10_123456_00001.psd

ライセンス

MIT

S
Description
No description provided
Readme MIT
33 KiB
Languages
Python 100%