ComfyUIのPNG画像をJPEG圧縮しJSONファイルも出力するアプリ (Patreon)
Downloads
Content
This article is intended for technical personnel and is written in Japanese.
この記事は技術者向けで、日本語で書かれています。
ComfyUIで作成したPNG画像はドラッグ&ドロップでグラフの再現ができますが、JPEG圧縮してしまうとそれができなくなるため、対策として圧縮時にJSONデータを抽出しファイルに書き出す方法を考えました。
詳細な説明等を書きますが、面倒な方は下の方のダウンロードまでお進みください。
1.何をするものか、何故するのか
ComfyUIで作成されたPNG画像をJPEG画像へ圧縮することができます。
その際に、
・PNGに入っているグラフデータをJSON形式で出力します
・PNGデータに 「prompt」 「parameters」 データが含まれていた場合、JPEGのEXIFデータに格納します
上にも書きましたが、ComfyUIで作成した画像を圧縮し、グラフの再現ができるようにJSONデータも保持しておきたかったため、既存のアプリを改変し作りました。ソフトは5ch なんJNVA部★298スレッドでTakenoko氏が配布されたものを改変しています。
PNGに prompt と parameters のデータが含まれている際の処理は、ComfyUIでグラフを展開する以外でもプロンプトの確認をしたかったために実装しました。PNGデータにそれらのデータが含まれていなかった場合、この処理はスルーされます。
ComfyUIのカスタムノード 「Save image with generation metadata on ComfyUI(※)」 で画像を保存するとプロンプトの情報等が残るため、これをJPEGのEXIFデータに保存したかったという個人的な理由が目的です。
本当はComfyUIのグラフデータもEXIFへ格納したかったのですが、EXIF容量制限の問題が解決できず別途JSONデータの出力という方法をとりました。
※カスタムノード Save image with generation metadata on ComfyUI:https://github.com/giriss/comfy-image-saver
2.アプリの要件とダウンロード
アプリのライセンスは以下となります。
Copyright © 2023 Takenoko
Released under the MIT license
https://opensource.org/licenses/mit-license.php
先述のとおり、ソフトは5ch なんJNVA部★298スレッドでTakenoko氏が配布されたものを改変しています。改変前の一式はフォルダ「back」に保存しているので、必要ならご確認ください。
PythonファイルなのでPythonのインストール、およびライブラリ 「PIL」 「piexif」が必要になります。
各ライブラリは
pip install pillow
pip install piexif
でインストールできます。
ファイルはこの記事の末尾に添付しておりますのでダウンロードしてください。
3.使い方
inputsフォルダに変換したいPNG画像を入れ、「png2jpgv2.bat」ファイルをダブルクリックすると、outputsフォルダにJPEG画像および同名のJSONファイルが保存されます。
JPEG圧縮の品質を変更する場合は「png2jpgv2.py」ファイルをエディタで開き、13行目
JPEG_QUALITY = 〇〇
の〇〇の数字を変更してください。初期設定は80になっています。
バッチ処理完了後にコマンドラインを閉じないようにしたい場合、png2jpgv2.bat内の
@REM pause
のコメントアウトを外してください。
EXIFに格納する prompt, parameters はASCIIコードで保存する設定にしていますが、Unicodeにしたい場合は「png2jpgv2.py」ファイルをエディタで開き、97、98行目の
encoding='ascii'
を
encodeing='unicode'
へ変更してください。
4.免責事項
当ソフトを利用した事によるいかなる損害も私Nimge 爾無碍は一切の責任を負いません。自己の責任の上で使用して下さい。