알고리즘을 사용하여 애니메이션 GIF를 만드는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/947138

  •  09-09-2019
  •  | 
  •  

문제

다양한 크기 (100x100과 같은 큰 크기)의 체스 보드에 대한 기사 투어에 대한 알고리즘이 있으며 결과를 애니메이션하고 싶습니다. 기사가 새 정사각형으로 이동할 때마다 (정사각형) 캔버스의 해당 픽셀은 전체 캔버스가 채색 될 때까지 색상이 변경됩니다. 결과 영화는 알고리즘에 대한 웹 페이지에서 볼 수 있습니다.

애니메이션 GIF는 광범위한 브라우저 지원을 원한다면 최상의 방법처럼 보입니다 (다른 제안을 환영하지만). 이 작업을 수행하기에 가장 적합한 도구 또는 라이브러리는 무엇입니까? Linux 또는 Mac 컴퓨터에서 자유롭게 사용할 수있는 것을 사용하게되어 기쁩니다.

실제 알고리즘이 너무 길어서 여기에서 유용한 예를 만들 수 있습니다 ( 이 종이 정말 궁금하다면) 그러나 여기에 (지루함) 의사 코드가 있습니다. 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")

여분의 신용 질문 : 파일 크기를 줄이기 위해이 영화의 특수 기능을 활용할 수 있습니까? 그만큼 위키 백과 기사 우리가 일부 픽셀 만 바꾸면이 작업을 수행 할 수 있다고 제안합니다. 사실 우리는 프레임 당 하나만 변경하고 있습니다!

도움이 되었습니까?

해결책

당신이 사용할 수있는 giflib 이것을 달성하기 위해. 문서는 다운로드에 있습니다.

예로서, 이 페이지 애니메이션을 생성하는 데 사용되는 프로그램에 giflib 및 소스 코드를 사용하여 생성 된 애니메이션 GIF가 포함되어 있습니다. 애니메이션에 giflib를 사용하는 방법을 보는 데 도움이 될 수 있습니다.

편집하다: 또 다른 대안은 사후 처리를 신경 쓰지 않는다면 간단한 형식을 사용하여 프레임을 간단히 출력하는 것입니다 (PPM과 같은) 그리고 Imagemagick을 사용하여 애니메이션 GIF를 만드십시오.

추가 신용 질문에 관해서는 : Imagemagick도 할 수도 있습니다. 프레임 비교 출력 크기를 줄이기 위해.

다른 팁

추가 신용 질문에 대한 응답으로 새 프레임에서 이미지의 변화된 부분만을 그리고 나머지는 투명하게 설정 하여이 개선을 직접 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top