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).
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.
- 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.
- 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. - 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.
- 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.
Versión 1: cambiar entre imágenes
La forma más fácil de ver lo que ocurre.
- 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.
- Conecta ambas a un Image Input Switch (WAS): la horizontal a image_a, la vertical a image_b, y el booleano al interruptor.
- Si el booleano es 1 (horizontal), el interruptor da la imagen A; si es 0 (vertical), la imagen B.
Una vista previa después del interruptor confirma que obtuviste la forma y el tamaño correctos.
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.
- Dos nodos Constant Number guardan los tamaños: 1920 para el lado largo y 1088 para el lado corto.
- Dos Number Input Switch (WAS), uno para el ancho y otro para el alto, ambos controlados por el mismo booleano.
- 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.
- El ancho y el alto elegidos van al cambio de tamaño de la imagen y al resto del flujo.
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.
