Muitas das perguntas sobre como criar um gif animado a partir de um conjunto de imagens png sugerem o uso de uma variante do convert
comando ImageMagick :
convert -delay 2 -loop 0 *.png animated.gif
No entanto, tenho alguns milhares de imagens e, portanto, convert
consome toda a minha memória, troca e depois trava. Que software alternativo existe, que é mais consciente da memória? Eu poderia usar outro formato aberto se .gif
não for suportado e prefiro uma ferramenta CLI.
command-line
software-recommendation
images
conversion
dotancohen
fonte
fonte
convert -delay 2 -loop 0 0*.png animated.gif
convertem apenas os arquivos que começam com um '0'. E assim por diante.Respostas:
Parece que você está tentando fazer um vídeo. Se for esse o caso, eu usaria um formato de vídeo adequado.
Nesse caso, eu usaria o ffmpeg para converter os arquivos PNG individuais em um vídeo H.264. Como o ffmpeg é feito para trabalhar com vídeos que podem durar horas, não deve haver nenhum problema com milhares de imagens. Usar H.264 em vez de gif animado resultará em uma grande melhoria na qualidade da imagem.
Algo assim deve funcionar para você:
-framerate 1/2
: Define a taxa de quadros para metade do FPS ou 2 segundos por quadro.-i img%04d.png
: Isto diz ffmpeg para ler os arquivosimg0000.png
emboraimg9999.png
.-c:v libx264
: Use o codec de vídeo libx264.-crf <number>
: Configuração de qualidade. 0 a 51. 23 é o padrão. 0 é uma codificação sem perdas verdadeira, que terá uma largura de banda bastante alta. 18 é quase visualmente sem perdas.-r 30
: Defina a taxa de quadros de saída para 30 FPS. Cada uma das imagens de entrada será duplicada para tornar a saída o que você especificar aqui. Você pode deixar esse parâmetro desativado e o arquivo de saída estará na taxa de quadros de entrada, mas o filme resultante não foi exibido corretamente quando eu tentei agora.out.mp4
: Nome do arquivo de saída.Referências:
fonte
Pessoalmente, eu o lançaria em um número limitado de arquivos em vez de todos de uma vez. Por exemplo, algo como isto:
fonte
Use
-limit memory 1GiB
para limitar a quantidade de memóriaconvert
utilizada.Milhares de imagens criariam um GIF enorme que a maioria dos computadores terá dificuldade em exibir. Eu mantenho meus GIFs animados abaixo de 200 imagens, quando possível. Quanto menos, melhor. Se você numerar suas imagens, esse comando excluirá as imagens numeradas ímpares
rm *[13579].png
.Então, aqui está o meu fluxo de trabalho típico para criar um GIF animado a partir de uma cena de filme:
fonte
Talvez o APNG seja útil para você. É suportado por alguns navegadores , incluindo Firefox, mas no momento excluindo Chrome e IE. Como é apenas uma extensão PNG, é muito simples converter PNGs em APNG. A ferramenta apngasm pode fazer isso. Mas o formato é tão simples que recentemente escrevi um montador de APNG para o Sage. Adaptar esse código seria uma alternativa.
fonte
Se você possui milhares de png-s, o formato anigif é estranho. Eu faria dessa maneira, usando
avconv
:fonte
gifsicle é um utilitário de linha de comando para lidar com animações GIF. Se você estiver disposto a trocar memória por velocidade, poderá usar a opção --conserve-memory.
fonte
Além de outras respostas: como você deseja produzir um arquivo GIF, suponho que você queira exibir a imagem em uma página da web. Nesse caso, eu não me incomodaria em converter seus PNGs. Basta pesquisar no Google por "apresentação de slides em javascript" e usar um dos milhões de scripts gratuitos. Ou escreva você mesmo, isso é realmente trivial.
Os benefícios de fazê-lo desta maneira são:
apenas uma imagem é carregada no navegador a qualquer momento, a apresentação de slides inicia rapidamente e não consome muita RAM na máquina do usuário.
a solução é dimensionada para milhões de imagens. Ou bilhões, se você for paciente o suficiente para assistir a todos :)
Você pode adicionar controles à sua página para pausar, retroceder, alterar o atraso ou ir para um quadro específico.
fonte