Ordena imágenes por relación de aspecto automáticamente en ComfyUI (un interruptor booleano, de dos maneras)

Detecta si cada imagen de una carpeta es horizontal o vertical y ajusta el flujo al tamaño correspondiente, sin ningún modelo de IA. Dos versiones: un interruptor de imágenes fácil de seguir y un interruptor de números más rápido.

Anton Tenitsky13 de octubre de 20264 min de lecturaVersión en vídeo más abajo

Esta guía se tradujo del inglés con IA y puede contener errores. Leer el original.

El nodo Image Aspect Ratio alimentando un nodo If else y una vista que muestra 0 para una imagen vertical

Cuando pasas una carpeta entera de imágenes por un flujo, unas son horizontales y otras verticales. Si las redimensionas todas a una misma forma, la mitad queda aplastada. La solución es una pequeña pieza de lógica que comprueba la orientación de cada imagen y elige el tamaño correcto: un interruptor booleano, encendido o apagado, A o B.

Como artista, los booleanos eran un concepto nuevo para mí y me costó entenderlos, así que esta guía lo explica desde cero. No usa ningún modelo de IA; es pura lógica, parte de mi proceso automatizado de 3D a concept art, más grande. Muestro dos versiones: una que cambia imágenes (más fácil de seguir) y otra que cambia números (más rápida).

Una cuadrícula de capturas de objetos de ciencia ficción, unas anchas y otras altas, junto al flujo de ordenación
La entrada: capturas de objetos de mi pack de ciencia ficción, unas anchas, otras altas.

En resumen

  • Image Aspect Ratio (WAS Node Suite) da 1 para horizontal, 0 para vertical.
  • Pásalo por un nodo If/else; el interruptor no lo acepta directamente.
  • Versión 1: redimensiona cada imagen de las dos formas y deja que un Image Input Switch elija la correcta.
  • Versión 2: cambia solo los números de ancho y alto, con dos Number Input Switch. Más rápido, y es el que uso.
  • Las imágenes cuadradas no se manejan; si todas las tuyas son cuadradas, no necesitas esto.

El comienzo común: detectar la orientación

Ambas versiones empiezan igual.

  1. Load Image Batch (del WAS Node Suite) apunta a una carpeta, en modo incremental image, de modo que cada ejecución carga la siguiente imagen y vuelve a empezar sin fin. Para probar usé una carpeta de solo tres imágenes, para recorrerla rápidamente.
  2. Image Aspect Ratio (también de WAS) lee la imagen y da is_landscape_bool: 1 si la imagen es horizontal, 0 si es vertical. Ese es el booleano.
  3. Un nodo Display Any (de rgthree) muestra el valor: 1 o 0. Solo sirve para resolver problemas y para enseñar a otros cómo funciona.
  4. Un nodo If/else pasa el valor. No puedes conectar la salida de relación de aspecto directamente a la entrada booleana de un interruptor; pasar por If/else hace que funcione.
El nodo Image Aspect Ratio con su salida is_landscape_bool conectada a un nodo If else y a un nodo Display Any que muestra 0
Una imagen vertical: la vista muestra 0. Una imagen horizontal muestra 1.
El nodo Image Aspect Ratio y su nota explicativa en el flujo
La nota en el flujo: 1 para horizontal, 0 para vertical; los cuadrados no necesitan interruptor.

Versión 1: cambiar entre imágenes

La forma más fácil de ver lo que ocurre.

  1. Redimensiona cada imagen entrante dos veces: una a un tamaño horizontal y otra, a la fuerza, a un tamaño vertical. Usa tamaños que convengan a Flux y SDXL.
  2. Conecta ambas a un Image Input Switch (WAS): la horizontal a image_a, la vertical a image_b, y el booleano al interruptor.
  3. Si el booleano es 1 (horizontal), el interruptor da la imagen A; si es 0 (vertical), la imagen B.
El nodo Image Input Switch con las entradas image_a, image_b y boolean
El Image Input Switch: verdadero elige la imagen A (horizontal), falso elige la imagen B (vertical).

Una vista previa después del interruptor confirma que obtuviste la forma y el tamaño correctos.

Una vista previa de una captura horizontal de una pistola de ciencia ficción tras el interruptor
Un objeto ancho, una pistola, pasa como horizontal…
Una vista previa de una captura vertical de un cuchillo tras el interruptor
…y uno alto, un cuchillo, como vertical.

El mismo truco funciona fuera de la generación de imágenes. ¿Quieres clasificar miles de fotos en una carpeta de horizontales y otra de verticales? Es este interruptor con dos nodos de guardado.

La pega: cada imagen se redimensiona dos veces y ambas copias se mantienen en memoria. Eso cuesta tiempo en cada ejecución, por eso construí la versión 2.

Versión 2: cambiar entre números

En lugar de cambiar imágenes, cambia solo los tamaños. No se guarda nada extra en memoria. Esta versión tiene su propio vídeo corto: parte 2.

  1. Dos nodos Constant Number guardan los tamaños: 1920 para el lado largo y 1088 para el lado corto.
  2. Dos Number Input Switch (WAS), uno para el ancho y otro para el alto, ambos controlados por el mismo booleano.
  3. Horizontal (1): el interruptor de ancho elige el número A (1920) y el de alto elige 1088. Vertical (0): eligen al revés, 1088 de ancho y 1920 de alto.
  4. El ancho y el alto elegidos van al cambio de tamaño de la imagen y al resto del flujo.
Dos nodos Constant Number fijados en 1088 para el lado más corto y 1920 para el más largo
Los dos tamaños, 1088 y 1920, entre los que eligen los interruptores de números.

Es más difícil de leer que cambiar imágenes, pero es duradero, no se rompe y la vista previa del final siempre muestra si funciona. Te permite procesar cualquier número de imágenes, redimensionadas al mayor tamaño que SDXL o Flux manejan bien en cualquiera de las dos orientaciones.

Más allá de las imágenes

Un interruptor booleano es un bloque básico para cualquier cosa en ComfyUI. Puedes cambiar según texto que escribas, una descripción o un prompt. Una vez que lo entiendes, abre muchísimas posibilidades de automatización. Si conoces una forma más eficiente de hacerlo, me encantaría leerla en los comentarios del vídeo.

Este interruptor forma parte de un paquete mayor de flujos en mi Patreon, junto con la configuración de profundidad a la que alimenta. Esa configuración se explica en de boceto a arte en una GPU de 4 GB.

Ver la versión en vídeo (4:50)

Todo lo anterior también está en el vídeo, si prefieres seguirlo en pantalla. El vídeo está en inglés.

Preguntas frecuentes

¿Cómo sabe ComfyUI si una imagen es horizontal o vertical?

El nodo Image Aspect Ratio del WAS Node Suite da un booleano: 1 (verdadero) para horizontal, 0 (falso) para vertical. Usas ese valor para cambiar entre imágenes o números.

¿Por qué necesito el nodo If/else?

La salida de relación de aspecto no se puede conectar directamente a la entrada booleana del interruptor. Pasarla por un nodo If/else la convierte en un valor que el interruptor acepta.

¿Y las imágenes cuadradas?

Esta configuración no las maneja. Si tus imágenes son cuadradas, no necesitas el interruptor en absoluto.

Anton Tenitsky es artista 3D con más de 15 años en gráficos por ordenador, que ha trabajado con Nickelodeon, Gameloft, Marvel Rivals y muchos otros clientes. Más sobre mí

Guías relacionadas