Gifs animados de ile_qstnhdr ___ ______ qstntxt ___

Existe alguma maneira de usar imagemagic / montagem para juntar gifs animados em loop (misturados com os não-animados)?

Ou seja, quero concatenar as animações no espaço, não no tempo. Percebo que o número de quadros e sua duração na animação podem impossibilitar a combinação perfeita de duas animações. Mas estou bem com o programa fazendo aproximações e suposições, e estendendo / repetindo quadros, contanto que todos os quadros estejam lá de alguma forma.

Eu tentei

%pre%

e

%pre%

mas ambos tratam os gifs animados como vários indivíduos não animados individuais.

Suponho que eu provavelmente poderia escrever um script para separar os animados por quadros, repetir / estender loops mais curtos conforme necessário para corresponder ao loop mais longo, repetir os gifs não-animados para quantos quadros estiverem no animado mais longo os quadros correspondentes em quadros grandes individuais com %code% e, em seguida, combine esses quadros grandes em um único gif grande. Mas eu não quero reinventar a roda se isso já for possível por algum comando simples.

Estou obviamente aberto a outras opções gratuitas além do imagemagick.

    
______ azszpr622672 ___

Parece que você deseja combinar várias animações ao longo do tempo, mas isso levará um programa para ler cada quadro e seu atraso e, em seguida, exibir esse quadro em alguma freqüência periódica até que o atraso seja atingido. por exemplo: 1 quadro, atraso de 1 segundo e sua 'frequência' é 100 ms, então você deseja que 10 quadros a 100ms sejam escritos? E então convertido para uma montagem linear?

Isso exigiria um programa ou roteiro pesado para realizar esse tipo de processamento e você teria que definir sua 'frequência' (100 ms aqui).

Mas isso funciona muito bem: (gifsicle é um pacote, a montagem faz parte do pacote imagemagick)

%pre%

(linha quebrada por legibilidade)

A primeira linha separa o gif recebido em quadros individuais (stdout), mas com as camadas preenchidas. inicialmente, sem a opção --unoptimize, daria o primeiro quadro, mas os quadros subseqüentes continham apenas o que mudava a cada vez. Feito para montagens estranhas!

A segunda linha cria a saída linear, pegando cada imagem de quadro (de stdin) e organizando-as na ordem que você especificar. 'x1' para organizá-los ao longo de uma linha horizontal.

Você pode substituir o nome de arquivo único (cool_animation.gif) por vários, ou até mesmo um caractere curinga * .gif.

Não tenho certeza de que é isso que você está procurando.

    
___

9

Existe alguma maneira de usar imagemagic / montagem para juntar gifs animados em loop (misturados com os não-animados)?

Ou seja, quero concatenar as animações no espaço, não no tempo. Percebo que o número de quadros e sua duração na animação podem impossibilitar a combinação perfeita de duas animações. Mas estou bem com o programa fazendo aproximações e suposições, e estendendo / repetindo quadros, contanto que todos os quadros estejam lá de alguma forma.

Eu tentei

convert *.gif -append output.gif

e

montage *.gif -mode concatenate -tile x1 output.gif

mas ambos tratam os gifs animados como vários indivíduos não animados individuais.

Suponho que eu provavelmente poderia escrever um script para separar os animados por quadros, repetir / estender loops mais curtos conforme necessário para corresponder ao loop mais longo, repetir os gifs não-animados para quantos quadros estiverem no animado mais longo os quadros correspondentes em quadros grandes individuais com -append e, em seguida, combine esses quadros grandes em um único gif grande. Mas eu não quero reinventar a roda se isso já for possível por algum comando simples.

Estou obviamente aberto a outras opções gratuitas além do imagemagick.

    
por tsbertalan 07.04.2013 / 03:22

1 resposta

1

Parece que você deseja combinar várias animações ao longo do tempo, mas isso levará um programa para ler cada quadro e seu atraso e, em seguida, exibir esse quadro em alguma freqüência periódica até que o atraso seja atingido. por exemplo: 1 quadro, atraso de 1 segundo e sua 'frequência' é 100 ms, então você deseja que 10 quadros a 100ms sejam escritos? E então convertido para uma montagem linear?

Isso exigiria um programa ou roteiro pesado para realizar esse tipo de processamento e você teria que definir sua 'frequência' (100 ms aqui).

Mas isso funciona muito bem: (gifsicle é um pacote, a montagem faz parte do pacote imagemagick)

gifsicle --unoptimize cool_animation.gif | \
  montage -tile x1 - linear_frames.png

(linha quebrada por legibilidade)

A primeira linha separa o gif recebido em quadros individuais (stdout), mas com as camadas preenchidas. inicialmente, sem a opção --unoptimize, daria o primeiro quadro, mas os quadros subseqüentes continham apenas o que mudava a cada vez. Feito para montagens estranhas!

A segunda linha cria a saída linear, pegando cada imagem de quadro (de stdin) e organizando-as na ordem que você especificar. 'x1' para organizá-los ao longo de uma linha horizontal.

Você pode substituir o nome de arquivo único (cool_animation.gif) por vários, ou até mesmo um caractere curinga * .gif.

Não tenho certeza de que é isso que você está procurando.

    
por 22.07.2013 / 14:14