Quand vous faites passer tout un dossier d’images dans un workflow, certaines sont en paysage et d’autres en portrait. Redimensionnez-les toutes à une seule forme et la moitié sera écrasée. La solution est un petit morceau de logique qui vérifie l’orientation de chaque image et choisit la bonne taille : un interrupteur booléen, allumé ou éteint, A ou B.
En tant qu’artiste, les booléens étaient un concept nouveau pour moi et il m’a fallu un moment pour les comprendre, ce guide explique donc tout depuis zéro. Il n’utilise aucun modèle d’IA ; c’est de la logique pure, qui fait partie de mon pipeline automatisé de la 3D au concept art plus vaste. Je montre deux versions : une qui commute des images (plus facile à suivre) et une qui commute des nombres (plus rapide).
En bref
- Image Aspect Ratio (WAS Node Suite) renvoie 1 pour le paysage, 0 pour le portrait.
- Faites-le passer par un node If/else ; le switch ne l’accepte pas directement.
- Version 1 : redimensionnez chaque image dans les deux sens et laissez un Image Input Switch choisir la bonne.
- Version 2 : ne commutez que les nombres de largeur et de hauteur, avec deux Number Input Switches. Plus rapide, et celle que j’utilise.
- Les images carrées ne sont pas gérées ; si toutes les vôtres sont carrées, vous n’en avez pas besoin.
Le départ commun : détecter l’orientation
Les deux versions commencent de la même façon.
- Load Image Batch (de la WAS Node Suite) pointe vers un dossier, en mode incremental image, pour que chaque exécution charge l’image suivante et boucle indéfiniment. Pour les tests, j’ai utilisé un dossier de seulement trois images, afin de pouvoir défiler rapidement.
- Image Aspect Ratio (également WAS) lit l’image et renvoie
is_landscape_bool: 1 si l’image est en paysage, 0 si elle est en portrait. C’est le booléen. - Un node Display Any (de rgthree) affiche la valeur : 1 ou 0. Il ne sert qu’au dépannage, et à montrer aux autres comment cela fonctionne.
- Un node If/else transmet la valeur. Vous ne pouvez pas connecter la sortie du rapport d’aspect directement à l’entrée booléenne d’un switch ; passer par If/else le fait fonctionner.
Version 1 : commuter entre des images
La façon la plus facile de voir ce qui se passe.
- Redimensionnez chaque image entrante deux fois : une fois à une taille paysage et une fois, de force, à une taille portrait. Utilisez des tailles qui conviennent à Flux et SDXL.
- Connectez les deux à un Image Input Switch (WAS) : celle en paysage à image_a, celle en portrait à image_b, et le booléen au switch.
- Si le booléen vaut 1 (paysage), le switch renvoie l’image A ; si 0 (portrait), l’image B.
Un aperçu après le switch confirme que vous avez obtenu la bonne forme et la bonne taille.
La même astuce fonctionne en dehors de la génération d’images. Vous voulez trier des milliers de photos dans un dossier paysage et un dossier portrait ? C’est ce switch avec deux nodes de sauvegarde.
Le hic : chaque image est redimensionnée deux fois et les deux copies sont conservées en mémoire. Cela coûte du temps à chaque exécution, et c’est pourquoi j’ai construit la version 2.
Version 2 : commuter entre des nombres
Au lieu de commuter des images, ne commutez que les tailles. Rien d’inutile n’est gardé en mémoire. Cette version a sa propre courte vidéo : partie 2.
- Deux nodes Constant Number contiennent les tailles : 1920 pour le côté long et 1088 pour le côté court.
- Deux Number Input Switches (WAS), un pour la largeur et un pour la hauteur, tous deux pilotés par le même booléen.
- Paysage (1) : le switch de largeur choisit le nombre A (1920) et le switch de hauteur choisit 1088. Portrait (0) : ils choisissent l’inverse, 1088 de large et 1920 de haut.
- La largeur et la hauteur choisies vont au redimensionnement de l’image et continuent dans le reste du workflow.
C’est plus difficile à lire que commuter des images, mais c’est durable, cela ne casse pas, et l’aperçu à la fin montre toujours si cela fonctionne. Cela vous permet de faire passer n’importe quel nombre d’images, redimensionnées à la plus grande taille que SDXL ou Flux gèrent bien dans chaque orientation.
Au-delà des images
Un interrupteur booléen est une brique pour n’importe quoi dans ComfyUI. Vous pouvez commuter selon du texte que vous saisissez, une description ou un prompt. Une fois que le déclic se fait, cela ouvre beaucoup d’automatisation. Si vous connaissez une façon plus efficace de faire cela, j’aimerais l’entendre dans les commentaires de la vidéo.
Ce switch fait partie d’un plus gros pack de workflows sur mon Patreon, avec la configuration de profondeur dans laquelle il s’insère. Cette configuration est expliquée dans du croquis à l’art sur un GPU de 4 Go.
Voir la version vidéo (4:50)
Tout ce qui précède est aussi dans la vidéo, si vous préférez suivre à l’écran. La vidéo est en anglais.
Questions fréquentes
Comment ComfyUI sait-il si une image est en paysage ou en portrait ?
Le node Image Aspect Ratio de la WAS Node Suite renvoie un booléen : 1 (vrai) pour le paysage, 0 (faux) pour le portrait. Vous utilisez cette valeur pour commuter entre des images ou des nombres.
Pourquoi ai-je besoin du node If/else ?
La sortie du rapport d'aspect ne peut pas être branchée directement à l'entrée booléenne du switch. La faire passer par un node If/else la convertit en une valeur que le switch accepte.
Et les images carrées ?
Cette configuration ne les gère pas. Si vos images sont carrées, vous n'avez pas besoin du switch.
