Pergunta

Eu tenho um algoritmo para passeios de cavaleiro em tabuleiros de vários tamanhos (tamanhos grandes, como 100x100) e eu gostaria de animar o resultado. Cada vez que o cavaleiro se move para uma nova casa, um pixel correspondente na tela (quadrado) vai mudar as cores, até que finalmente toda a tela é colorida. Os filmes resultantes estarão disponíveis para visualização em uma página da web sobre o algoritmo.

GIFs animados parece ser o melhor método se eu quiser um amplo apoio navegador (embora outras sugestões são bem-vindos). Qual é a melhor ferramenta ou biblioteca para fazer isso com? Estou feliz de usar qualquer coisa que está disponível gratuitamente em um computador Linux ou Mac.

O algoritmo real é muito tempo para fazer um exemplo útil aqui (veja este papel se você estiver realmente curioso), mas pseudocódigo está aqui para um (chato) do rei visita em uma placa 8x8:

movie = new Movie()
frame = new Frame()
frame.fillRectangle((1,1), 8, 8, BLUE)
for row in [1..8] {
    if (row.isOdd()) { colrange = [1..8] } else { colrange = [8..1] }
    for col in colrange {
        frame.colourPixel(row, col, RED)
        movie.addFrame(frame)
    }
}
movie.saveAsGIF("tour.gif")

questão Extra-crédito: podemos tirar proveito das características especiais deste filme para reduzir o tamanho do arquivo? O artigo href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_.gif" rel="noreferrer"> Wikipedia sugere que pode ser capaz de fazer isso, se estamos apenas mudando alguns dos pixels - na verdade estamos apenas mudando um por quadro

Foi útil?

Solução

Você pode usar giflib para alcançar este objetivo. Documentação está no download.

gifs

Como exemplo, desta página contém animados criado usando giflib e código-fonte para o programa usado para gerar as animações. Pode ser útil para ver como usar giflib para animações.

Editar: Outra alternativa, se você não se importa um pouco de pós-processamento, é simplesmente saída de seus quadros usando um formato simples ( como o PPM ) e, em seguida, fazer o gif animado usando ImageMagick .

Quanto à sua pergunta crédito extra: ImageMagick pode até fazer quadro comparações para -lo a reduzir o tamanho da saída.

Outras dicas

Em resposta à sua pergunta de crédito extra, você poderia fazer isso melhora-se apenas por desenhar a parte alterada da imagem sobre os novos quadros e definir o resto para ser transparente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top