Какой лучший способ сделать анимированный GIF с использованием алгоритма? - PullRequest
5 голосов
/ 04 июня 2009

У меня есть алгоритм для конных туров на шахматных досках разных размеров (больших размеров, например, 100х100), и я хотел бы оживить результат. Каждый раз, когда конь перемещается в новый квадрат, соответствующий пиксель в (квадратном) холсте будет менять цвета, пока в конечном итоге не будет окрашен весь холст. Полученные фильмы будут доступны для просмотра на веб-странице об алгоритме.

Анимированные GIF-файлы кажутся лучшим способом, если мне нужна широкая поддержка браузера (хотя другие предложения приветствуются). Какой лучший инструмент или библиотека для этого? Я счастлив использовать все, что свободно доступно на компьютере Linux или Mac.

Фактический алгоритм слишком длинный, чтобы сделать полезный пример здесь (см. эту статью , если вам действительно интересно), но вот псевдокод для (скучного) короля тура в Доска 8х8:

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")

Вопрос о дополнительном кредите: Можем ли мы воспользоваться специальными функциями этого фильма, чтобы уменьшить размер файла? Статья Википедии предполагает, что мы могли бы сделать это, если мы меняем только некоторые пиксели - фактически мы меняем только один на кадр!

Ответы [ 2 ]

4 голосов
/ 04 июня 2009

Вы можете использовать giflib для этого. Документация находится в загрузке.

Например, эта страница содержит анимированные GIF-файлы, созданные с использованием giflib и исходного кода для программы, используемой для создания анимации. Может быть полезно посмотреть, как использовать giflib для анимации.

Редактировать: Другая альтернатива, если вы не возражаете против некоторой пост-обработки, - просто вывести ваши кадры, используя простой формат (, например, PPM ), а затем сделать анимированный GIF с помощью ImageMagick .

Что касается вашего дополнительного вопроса о кредите: ImageMagick может даже сделать сравнение кадров для вас, чтобы уменьшить размер вывода.

0 голосов
/ 04 июня 2009

В ответ на дополнительный вопрос о кредите вы могли бы сделать это улучшение самостоятельно, только нарисовав измененную часть изображения на новых кадрах и установив остальную часть прозрачной.

...