Bilder in ComfyUI automatisch nach Seitenverhältnis sortieren (ein boolescher Schalter, auf zwei Arten)

Erkenne, ob jedes Bild in einem Ordner im Quer- oder Hochformat ist, und dimensioniere den Workflow entsprechend, ganz ohne KI-Modell. Zwei Versionen: ein leicht nachvollziehbarer Image Switch und ein schnellerer Number Switch.

Anton Tenitsky13. Oktober 20264 Min. LesezeitVideoversion unten

Diese Anleitung wurde mit KI aus dem Englischen übersetzt und kann Fehler enthalten. Zum Original.

Der Node Image Aspect Ratio, der einen If-else-Node und eine Anzeige speist, die 0 für ein Hochformatbild zeigt

Wenn du einen ganzen Ordner mit Bildern durch einen Workflow schickst, sind manche im Querformat und manche im Hochformat. Skaliere sie alle auf eine Form, und die Hälfte wird gestaucht. Die Lösung ist ein kleines Stück Logik, das die Ausrichtung jedes Bildes prüft und die richtige Größe wählt, ein boolescher Schalter: an oder aus, A oder B.

Als Künstler waren Boolesche Werte ein neues Konzept für mich und ich brauchte eine Weile, um sie zu verstehen, daher erklärt dieser Leitfaden alles von Grund auf. Er nutzt überhaupt keine KI-Modelle; es ist reine Logik, Teil meiner größeren automatisierten 3D-zu-Concept-Art-Pipeline. Ich zeige zwei Versionen: eine, die Bilder umschaltet (leichter nachzuvollziehen), und eine, die Zahlen umschaltet (schneller).

Ein Raster von Screenshots von Science-Fiction-Props, manche breit, manche hoch, neben dem Sortier-Workflow
Die Eingabe: Prop-Screenshots aus meinem Science-Fiction-Paket, manche breit, manche hoch.

Kurz gefasst

  • Image Aspect Ratio (WAS Node Suite) gibt 1 für Querformat, 0 für Hochformat aus.
  • Schicke es durch einen If/else-Node; der Switch akzeptiert es nicht direkt.
  • Version 1: Skaliere jedes Bild in beide Richtungen und lass einen Image Input Switch das richtige wählen.
  • Version 2: Schalte nur die Zahlen für Breite und Höhe um, mit zwei Number Input Switches. Schneller, und das, was ich nutze.
  • Quadratische Bilder werden nicht behandelt; wenn alle deine quadratisch sind, brauchst du das nicht.

Der gemeinsame Anfang: die Ausrichtung erkennen

Beide Versionen beginnen gleich.

  1. Load Image Batch (aus der WAS Node Suite) zeigt auf einen Ordner, im Modus incremental image, sodass jeder Durchlauf das nächste Bild lädt und endlos weiterläuft. Zum Testen habe ich einen Ordner mit nur drei Bildern genutzt, damit ich schnell durchschalten konnte.
  2. Image Aspect Ratio (ebenfalls WAS) liest das Bild und gibt is_landscape_bool aus: 1, wenn das Bild im Querformat ist, 0, wenn es im Hochformat ist. Das ist der Boolesche Wert.
  3. Ein Node Display Any (aus rgthree) zeigt den Wert: 1 oder 0. Er dient nur der Fehlersuche und dazu, anderen zu zeigen, wie es funktioniert.
  4. Ein If/else-Node reicht den Wert weiter. Du kannst die Ausgabe des Seitenverhältnisses nicht direkt an den Booleschen Eingang eines Switches anschließen; der Weg über If/else macht es funktionsfähig.
Der Node Image Aspect Ratio, dessen Ausgabe is_landscape_bool mit einem If-else-Node und einem Display-Any-Node verbunden ist, der 0 zeigt
Ein Hochformatbild: Die Anzeige zeigt 0. Ein Querformatbild zeigt 1.
Der Node Image Aspect Ratio und seine erklärende Notiz im Workflow
Die Notiz im Workflow: 1 für Querformat, 0 für Hochformat; Quadrate brauchen keinen Switch.

Version 1: zwischen Bildern umschalten

Der einfachste Weg, zu sehen, was passiert.

  1. Skaliere jedes eingehende Bild zweimal: einmal auf eine Querformat-Größe und einmal, erzwungen, auf eine Hochformat-Größe. Nutze Größen, die zu Flux und SDXL passen.
  2. Verbinde beide mit einem Image Input Switch (WAS): das Querformat mit image_a, das Hochformat mit image_b, und den Booleschen Wert mit dem Switch.
  3. Wenn der Boolesche Wert 1 ist (Querformat), gibt der Switch Bild A aus; bei 0 (Hochformat) Bild B.
Der Node Image Input Switch mit den Eingängen image_a, image_b und boolean
Der Image Input Switch: wahr wählt Bild A (Querformat), falsch wählt Bild B (Hochformat).

Eine Vorschau nach dem Switch bestätigt, dass du die richtige Form und Größe bekommen hast.

Eine Vorschau eines Querformat-Screenshots einer Science-Fiction-Pistole nach dem Switch
Ein breites Prop, eine Pistole, läuft als Querformat durch…
Eine Vorschau eines Hochformat-Screenshots eines Messers nach dem Switch
…und ein hohes, ein Messer, als Hochformat.

Derselbe Trick funktioniert auch außerhalb der Bilderzeugung. Du willst Tausende Fotos in einen Querformat-Ordner und einen Hochformat-Ordner sortieren? Das ist dieser Switch mit zwei Speicher-Nodes.

Der Haken: Jedes Bild wird zweimal skaliert, und beide Kopien liegen im Speicher. Das kostet bei jedem Durchlauf Zeit, und deshalb habe ich Version 2 gebaut.

Version 2: zwischen Zahlen umschalten

Statt Bilder umzuschalten, schaltest du nur die Größen um. Nichts Zusätzliches bleibt im Speicher. Diese Version hat ein eigenes kurzes Video: Teil 2.

  1. Zwei Constant Number-Nodes halten die Größen: 1920 für die lange Seite und 1088 für die kurze Seite.
  2. Zwei Number Input Switches (WAS), einer für die Breite und einer für die Höhe, beide vom selben Booleschen Wert gesteuert.
  3. Querformat (1): Der Breiten-Switch wählt Zahl A (1920), und der Höhen-Switch wählt 1088. Hochformat (0): Sie wählen umgekehrt, 1088 breit und 1920 hoch.
  4. Die gewählte Breite und Höhe gehen an die Bildskalierung und weiter durch den Rest des Workflows.
Zwei Constant-Number-Nodes, auf 1088 für die kürzere Seite und 1920 für die längere Seite gesetzt
Die beiden Größen, 1088 und 1920, zwischen denen die Number Switches wählen.

Es ist schwerer zu lesen als das Umschalten von Bildern, aber es ist robust, es geht nicht kaputt, und die Vorschau am Ende zeigt immer, ob es funktioniert. Damit kannst du beliebig viele Bilder durchschicken, jeweils auf die größte Größe skaliert, die SDXL oder Flux in jeder Ausrichtung gut verarbeiten.

Jenseits von Bildern

Ein boolescher Schalter ist ein Baustein für alles in ComfyUI. Du kannst anhand von Text umschalten, den du tippst, einer Beschreibung oder einem Prompt. Wenn es einmal klick gemacht hat, eröffnet es viel Automatisierung. Wenn du einen effizienteren Weg kennst, würde ich mich über einen Kommentar zum Video freuen.

Dieser Switch gehört zu einem größeren Paket von Workflows auf meinem Patreon, zusammen mit dem Tiefen-Setup, in das er einfließt. Dieses Setup wird in Skizze zu Kunst auf einer 4-GB-GPU erklärt.

Die Videoversion ansehen (4:50)

Alles oben steht auch im Video, falls du lieber am Bildschirm mitmachst. Das Video ist auf Englisch.

Häufige Fragen

Woher weiß ComfyUI, ob ein Bild im Quer- oder Hochformat ist?

Der Node Image Aspect Ratio aus der WAS Node Suite gibt einen Booleschen Wert aus: 1 (wahr) für Querformat, 0 (falsch) für Hochformat. Mit diesem Wert schaltest du zwischen Bildern oder Zahlen um.

Warum brauche ich den If/else-Node?

Die Ausgabe des Seitenverhältnisses lässt sich nicht direkt an den Booleschen Eingang des Switches anschließen. Sie durch einen If/else-Node zu schicken, wandelt sie in einen Wert um, den der Switch akzeptiert.

Was ist mit quadratischen Bildern?

Dieses Setup behandelt sie nicht. Wenn deine Bilder quadratisch sind, brauchst du den Switch gar nicht.

Anton Tenitsky ist 3D-Artist mit mehr als 15 Jahren Erfahrung in der Computergrafik, tätig für Nickelodeon, Gameloft, Marvel Rivals und viele weitere Kunden. Mehr über mich

Ähnliche Anleitungen