ComfyUI-SaveImageDPI
Save images as PNG/JPEG/TIFF/PSD with DPI metadata and filename tokens (%model%, %seed%)
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.
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 infilename_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
<a name="日本語"></a>
日本語
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