Ordene imagens por proporção automaticamente no ComfyUI (um interruptor booleano, de duas formas)

Detecte se cada imagem de uma pasta é paisagem ou retrato e dimensione o fluxo de acordo, sem nenhum modelo de IA. Duas versões: um image switch fácil de acompanhar e um number switch mais rápido.

Anton Tenitsky13 de outubro de 20264 min de leituraVersão em vídeo abaixo

Este guia foi traduzido do inglês com IA e pode conter erros. Leia o original.

O nó Image Aspect Ratio alimentando um nó If else e um display mostrando 0 para uma imagem em retrato

Quando você passa uma pasta inteira de imagens por um fluxo, algumas são paisagem e outras retrato. Redimensione todas para uma só forma e metade fica esmagada. A solução é um pequeno trecho de lógica que verifica a orientação de cada imagem e escolhe o tamanho certo, um interruptor booleano: ligado ou desligado, A ou B.

Como artista, booleanos eram um conceito novo para mim e levei um tempo para entender, então este guia explica do zero. Não usa nenhum modelo de IA; é lógica pura, parte do meu pipeline automatizado de 3D para concept art maior. Mostro duas versões: uma que alterna imagens (mais fácil de acompanhar) e outra que alterna números (mais rápida).

Uma grade de capturas de adereços de ficção científica, algumas largas e outras altas, ao lado do fluxo de ordenação
A entrada: capturas de adereços do meu pacote de ficção científica, algumas largas, outras altas.

Em resumo

  • Image Aspect Ratio (WAS Node Suite) entrega 1 para paisagem, 0 para retrato.
  • Passe-o por um nó If/else; o switch não o aceita diretamente.
  • Versão 1: redimensione cada imagem nos dois sentidos e deixe um Image Input Switch escolher a certa.
  • Versão 2: alterne apenas os números de largura e altura, com dois Number Input Switches. Mais rápida, e a que eu uso.
  • Imagens quadradas não são tratadas; se todas as suas são quadradas, você não precisa disto.

O começo comum: detectar a orientação

As duas versões começam do mesmo jeito.

  1. O Load Image Batch (do WAS Node Suite) aponta para uma pasta, no modo incremental image, para cada execução carregar a próxima imagem e repetir para sempre. Para testar usei uma pasta com apenas três imagens, para percorrer rápido.
  2. O Image Aspect Ratio (também do WAS) lê a imagem e entrega is_landscape_bool: 1 se a imagem é paisagem, 0 se é retrato. Esse é o booleano.
  3. Um nó Display Any (do rgthree) mostra o valor: 1 ou 0. Serve só para diagnóstico e para mostrar aos outros como funciona.
  4. Um nó If/else repassa o valor. Você não pode conectar a saída da proporção direto à entrada booleana de um switch; passar pelo If/else faz funcionar.
O nó Image Aspect Ratio com sua saída is_landscape_bool conectada a um nó If else e a um nó Display Any mostrando 0
Uma imagem em retrato: o display mostra 0. Uma imagem em paisagem mostra 1.
O nó Image Aspect Ratio e sua nota explicativa no fluxo
A nota no fluxo: 1 para paisagem, 0 para retrato; quadrados não precisam de switch.

Versão 1: alternar entre imagens

A forma mais fácil de ver o que está acontecendo.

  1. Redimensione cada imagem que chega duas vezes: uma para um tamanho paisagem e outra, à força, para um tamanho retrato. Use tamanhos que sirvam ao Flux e ao SDXL.
  2. Conecte as duas a um Image Input Switch (WAS): a paisagem em image_a, a retrato em image_b, e o booleano no switch.
  3. Se o booleano for 1 (paisagem), o switch entrega a imagem A; se 0 (retrato), a imagem B.
O nó Image Input Switch com as entradas image_a, image_b e boolean
O Image Input Switch: verdadeiro escolhe a imagem A (paisagem), falso escolhe a imagem B (retrato).

Uma pré-visualização depois do switch confirma que você obteve a forma e o tamanho certos.

Uma pré-visualização de uma captura em paisagem de uma pistola de ficção científica depois do switch
Um adereço largo, uma pistola, passa como paisagem…
Uma pré-visualização de uma captura em retrato de uma faca depois do switch
…e um alto, uma faca, como retrato.

O mesmo truque funciona fora da geração de imagens. Quer separar milhares de fotos numa pasta de paisagem e numa de retrato? É este switch com dois nós de salvamento.

O porém: cada imagem é redimensionada duas vezes e as duas cópias ficam na memória. Isso custa tempo a cada execução, e por isso criei a versão 2.

Versão 2: alternar entre números

Em vez de alternar imagens, alterne só os tamanhos. Nada extra fica na memória. Esta versão tem seu próprio vídeo curto: parte 2.

  1. Dois nós Constant Number guardam os tamanhos: 1920 para o lado longo e 1088 para o lado curto.
  2. Dois Number Input Switches (WAS), um para a largura e outro para a altura, ambos controlados pelo mesmo booleano.
  3. Paisagem (1): o switch de largura escolhe o número A (1920) e o de altura escolhe 1088. Retrato (0): escolhem ao contrário, 1088 de largura e 1920 de altura.
  4. A largura e a altura escolhidas vão para o redimensionamento da imagem e seguem pelo resto do fluxo.
Dois nós Constant Number definidos em 1088 para o lado mais curto e 1920 para o lado mais longo
Os dois tamanhos, 1088 e 1920, entre os quais os number switches escolhem.

É mais difícil de ler do que alternar imagens, mas é durável, não quebra, e a pré-visualização no final sempre mostra se está funcionando. Permite passar qualquer quantidade de imagens, redimensionadas para o maior tamanho que o SDXL ou o Flux tratam bem em cada orientação.

Além das imagens

Um interruptor booleano é um bloco de construção para qualquer coisa no ComfyUI. Você pode alternar com base em texto que digita, numa descrição ou num prompt. Quando a ficha cai, abre-se muita automação. Se você conhece uma forma mais eficiente de fazer isso, eu adoraria saber nos comentários do vídeo.

Este switch faz parte de um pacote maior de fluxos no meu Patreon, junto com a configuração de profundidade em que ele entra. Essa configuração é explicada em esboço em arte numa GPU de 4 GB.

Assista à versão em vídeo (4:50)

Tudo o que está acima também está no vídeo, se você preferir acompanhar na tela. O vídeo está em inglês.

Perguntas frequentes

Como o ComfyUI sabe se uma imagem é paisagem ou retrato?

O nó Image Aspect Ratio do WAS Node Suite entrega um booleano: 1 (verdadeiro) para paisagem, 0 (falso) para retrato. Você usa esse valor para alternar entre imagens ou números.

Por que preciso do nó If/else?

A saída da proporção não pode ser ligada direto à entrada booleana do switch. Passá-la por um nó If/else a converte num valor que o switch aceita.

E as imagens quadradas?

Esta configuração não as trata. Se suas imagens são quadradas, você nem precisa do switch.

Anton Tenitsky é artista 3D com mais de 15 anos em computação gráfica, que trabalhou com Nickelodeon, Gameloft, Marvel Rivals e muitos outros clientes. Mais sobre mim

Guias relacionados