O comando Converter não respeita a ordem

0

Eu tenho um certo número de arquivos png, chamados 1.png , 2.png , etc. e preciso fazer uma animação com eles. Estou usando convert -delay 20 *.png animation.gif .

A primeira vez que o usei, aconteceu que a animação criada começou às 10, depois às 11 e depois às 12, até às 19 e, depois, a 2! É lógico, mas não quero isso. Então, o que eu fiz foi modificar os nomes para 01.png , 02.png .

Isso foi OK no começo. Agora, quero fazer um gif com mais imagens (milhares), e o problema é que quando chega a 10 por exemplo, vai para 100! Eu não posso estar modificando os nomes manualmente, porque tudo isso faz parte de um script, e o usuário escolhe quantos png ele quer. Então, como resolver?

    
por Diego 04.11.2016 / 16:56

1 resposta

3

Isso não tem nada a ver com o comando convert - seu shell está expandindo o padrão de glob *.png antes de ser passado para o comando, e o faz na ordem de agrupamento léxico LC_COLLATE definido como parte do sistema atual locale .

Infelizmente, é difícil obter ordem numérica no bash shell (que é o que eu suponho que você está usando): se você não se importa de mudar para zsh existe a possibilidade de usar um numérico qualificador glob ou seja

convert -delay 20 *.png(n) animation.gif

Para uma discussão mais detalhada, consulte, por exemplo, as Perguntas e respostas relacionadas Glob com ordem numérica

    
por steeldriver 04.11.2016 / 17:23