ComfyUIでアスペクト比に応じて画像を自動で振り分ける(2通りのブール値スイッチ)

フォルダ内の各画像が横向きか縦向きかを検出し、ワークフローのサイズを合わせます。AIモデルは使いません。分かりやすい画像スイッチ版と、より速い数値スイッチ版の2つを紹介します。

Anton Tenitsky2026年10月13日約9分で読めます動画版は下にあります

このガイドはAIで英語から翻訳したもので、誤りを含む可能性があります。英語の原文を読む。

Image Aspect RatioノードがIf elseノードに入力され、縦向きの画像で0を表示しているディスプレイ

フォルダの画像をまとめてワークフローに通すとき、横向きのものと縦向きのものが混ざっています。すべてを1つの形にリサイズすると、半分がつぶれてしまいます。解決策は、各画像の向きを確認して適切なサイズを選ぶ、小さなロジックのブール値スイッチです。オンかオフか、AかBかを選びます。

アーティストの私にとって、ブール値は新しい概念で、理解するのに時間がかかりました。そのため、このガイドでは基礎から説明します。AIモデルは一切使わず、純粋なロジックで、より大きな3Dからコンセプトアートまでの自動化パイプラインの一部です。2つのバージョンを紹介します。画像を切り替えるもの(分かりやすい)と、数値を切り替えるもの(より速い)です。

振り分けワークフローの隣に並んだ、横長のものと縦長のものがあるSF小道具のスクリーンショットのグリッド
入力:私のSFパックの小道具のスクリーンショット。横長のものも縦長のものもあります。

ポイント

  • Image Aspect Ratio(WAS Node Suite)は、横向きなら1、縦向きなら0を出力します。
  • If/elseノードを通します。スイッチは直接は受け付けません。
  • バージョン1: すべての画像を両方向にリサイズし、Image Input Switchに正しいほうを選ばせます。
  • バージョン2: 幅と高さの数値だけを、2つのNumber Input Switchで切り替えます。より速く、私が使っているのはこちらです。
  • 正方形の画像は扱いません。すべて正方形なら、これは不要です。

共通の最初の部分:向きを検出する

どちらのバージョンも、同じように始まります。

  1. (WAS Node Suiteの)Load Image Batchがフォルダを指定し、incremental imageモードで、実行のたびに次の画像を読み込んで延々とループします。テストでは3枚だけのフォルダを使い、素早く一巡できるようにしました。
  2. (同じくWASの)Image Aspect Ratioが画像を読み取ってis_landscape_boolを出力します。横向きなら1、縦向きなら0です。これがブール値です。
  3. (rgthreeの)Display Anyノードが、1か0の値を表示します。トラブルシューティングと、仕組みを人に見せるためだけのものです。
  4. If/elseノードが値を渡します。アスペクト比の出力をスイッチのブール入力に直接接続することはできません。If/elseを通すと動きます。
is_landscape_bool出力がIf elseノードと、0を表示するDisplay Anyノードに接続された、Image Aspect Ratioノード
縦向きの画像:ディスプレイは0を表示します。横向きの画像なら1です。
ワークフロー内の説明ノート付きのImage Aspect Ratioノード
ワークフロー内のノート:横向きは1、縦向きは0。正方形にスイッチは不要です。

バージョン1:画像を切り替える

何が起きているかを見るには、最も簡単な方法です。

  1. 入ってくる各画像を2回リサイズします。1回は横向きのサイズに、もう1回は強制的に縦向きのサイズにします。FluxとSDXLに合うサイズを使います。
  2. 両方を(WASの)Image Input Switchに接続します。横向きをimage_a、縦向きをimage_b、ブール値をスイッチに接続します。
  3. ブール値が1(横向き)なら、スイッチは画像Aを、0(縦向き)なら画像Bを出力します。
image_a、image_b、booleanの入力があるImage Input Switchノード
Image Input Switch:trueなら画像A(横向き)、falseなら画像B(縦向き)を選びます。

スイッチの後のプレビューで、正しい形とサイズになったか確認できます。

スイッチ後の、SFピストルの横向きスクリーンショットのプレビュー
横長の小道具、ピストルは、横向きとして通ります…
スイッチ後の、ナイフの縦向きスクリーンショットのプレビュー
…そして縦長のもの、ナイフは、縦向きとして通ります。

同じコツは、画像生成以外でも使えます。何千枚もの写真を、横向きのフォルダと縦向きのフォルダに振り分けたいですか?このスイッチに、2つの保存ノードを付けるだけです。

欠点は、すべての画像が2回リサイズされ、両方のコピーがメモリに保持されることです。毎回の実行に時間がかかるので、バージョン2を作りました。

バージョン2:数値を切り替える

画像を切り替える代わりに、サイズだけを切り替えます。余計なものはメモリに保持されません。このバージョンには専用の短い動画があります:パート2。

  1. 2つのConstant Numberノードがサイズを保持します。長辺用の1920と、短辺用の1088です。
  2. 幅用と高さ用の2つの(WASの)Number Input Switchを、同じブール値で動かします。
  3. 横向き(1): 幅のスイッチは数値A(1920)を、高さのスイッチは1088を選びます。縦向き(0): 逆になり、幅1088、高さ1920を選びます。
  4. 選ばれた幅と高さがimage resizeに渡され、ワークフローの残りに進みます。
短辺に1088、長辺に1920を設定した2つのConstant Numberノード
数値スイッチが選ぶ、1088と1920の2つのサイズ。

画像を切り替えるより読みにくいものの、堅牢で壊れず、最後のプレビューで常にうまく動いているかが分かります。どんな枚数の画像でも、どちらの向きでもSDXLやFluxが得意とする最大のサイズにリサイズして通せます。

画像以外にも

ブール値スイッチは、ComfyUIのあらゆる用途の構成要素です。入力したテキスト、説明、プロンプトに基づいて切り替えることもできます。一度理解すれば、多くの自動化への道が開けます。もっと効率的な方法をご存知なら、動画のコメントで教えていただけると嬉しいです。

このスイッチは、それが入力する深度の構成とともに、私のPatreonにある、より大きなワークフローのパッケージの一部です。その構成は、VRAM 4GBのGPUでスケッチからアートへで説明しています。

動画版を見る (4:50)

上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。

よくある質問

ComfyUIは画像が横向きか縦向きかをどうやって知るのですか?

WAS Node SuiteのImage Aspect Ratioノードが、ブール値を出力します。横向きなら1(true)、縦向きなら0(false)です。この値を使って、画像や数値を切り替えます。

If/elseノードが必要なのはなぜですか?

アスペクト比の出力は、スイッチのブール入力に直接接続できません。If/elseノードを通すと、スイッチが受け付ける値に変換されます。

正方形の画像はどうなりますか?

この構成では扱えません。画像が正方形なら、スイッチ自体が不要です。

Anton Tenitsky は コンピュータグラフィックスで15年以上の経験を持つ3Dアーティストで、Nickelodeon、Gameloft、Marvel Rivalsをはじめ多くのクライアントと仕事をしてきました。 プロフィールを見る

関連ガイド