Google Colaboratory에서 애니메이션 보기

TL;DR



Google Colaboratory상에서 무언가 이미지를 그려서 그것을 애니메이션으로 한다면, 파일을 일련번호로 토하고 apng로 해 버리는 것이 편하다.

소개



Google Colab에서 무언가를 계산하고 그 결과를 애니메이션으로 보여주고 싶습니다. 보통으로 한다면 matplotlib로 가시화할 것이다. 원래 Colab에서 이미지를 표시하는 것도 한 번 파일에 뱉은 다음 표시 가 편하기도 한다.

그리고, 애니메이션에 대해서도 여러가지 시행착오했지만, 결국 한번 연번 파일로 토해 버리고 나서, 애니메이션 PNG(APNG)로 해 버리는 것이 제일 편했다.

샘플 코드



APNG 설치



Google Colab의 첫 번째 셀에 APNG를 설치합니다.
!pip install APNG

아마도 문제없이 설치되어 "Successfully installed APNG-0.3.3"이라고 표시 될 것입니다.

일련 파일 출력



뭐든지 좋기 때문에, 일련의 PNG 파일을 토하는 코드를 쓰자. 이하는 원주상을 원이 주회할 뿐의 애니메이션.
from apng import APNG
from math import cos, pi, sin
from PIL import Image, ImageDraw
import IPython

def save(index, frames):
    filename = "file%02d.png" % index
    im = Image.new("RGB", (100, 100), (255, 255, 255))
    draw = ImageDraw.Draw(im)
    x = 30*cos(2*pi*index/frames) + 50
    y = 30*sin(2*pi*index/frames) + 50
    draw.ellipse((20,20,80,80),outline=(0,0,0))
    draw.ellipse((x-5, y-5, x+5, y+5), fill=(0, 0, 255))
    im.save(filename)
    return filename

나중에 APNG에 걸리므로 파일 이름을 반환합니다.

APNG에 전달하여 애니메이션 만들기


APNG 는 파일 목록을 먹으면 APNG로 해주는 메소드 from_files
저장된 파일은 save로 그대로 표시할 수 있다.
files = []
frames = 50
for i in range(frames):
    files.append(save(i, frames))
APNG.from_files(files, delay=100).save("animation.png")
IPython.display.Image("animation.png")

실행 결과는 이런 느낌.



셀을 실행하면 무사히 Google Colab에서 애니메이션이 표시되었습니다.

요약



Google Colab에서 애니메이션을 표시하는 방법을 소개했습니다. 수치 계산의 시뮬레이션이나, 무언가 움직이는 것의 가시화 뭔가를 하는 경우, Matplotlib로 노력하는 것보다, PIL로 연속번 png 토해 APNG 만드는 편이 편하다고 생각한다.

좋은 웹페이지 즐겨찾기