2015-05-31 16 views
12

Potrafię utworzyć prosty diagram z kształtami i liczbami. używam następujący kod:Tworzenie animacji za pomocą Pythona Gizeh

import gizeh as gz 

W, H = 500, 300 

surface = gz.Surface(W,H, bg_color=(1,0.7,1)) 

for a in range(1,9): 
    rect = gz.rectangle(lx = 10, ly = 10, xy=(W/a,H/a), fill =(0,1,0.7)) 
    rect.draw(surface) 
    txt = gz.text(str(a), fontfamily="Dancing Script", fontsize=15, fill=(0,0,0),xy=(W/a,H/a)) 
    txt.draw(surface) 

surface.ipython_display() 

Mam również stworzył wersję używając moviepy:

import numpy as np 
import gizeh as gz 
import moviepy.editor as mpy 

W, H = 500, 300 
duration = 5 
figpath = '/tmp/' 
fps = 1 

def make_frame(t): 

    surface = gz.Surface(W,H, bg_color=(1,1,1)) 

    rect = gz.rectangle(lx = 10, ly = 10, xy=(W/(t+1),H/2), fill =(0,1,0.7)) 
    rect.draw(surface) 
    txt = gz.text(str(t+1), fontfamily="Dancing Script", fontsize=15, fill=(0,0,0),xy=(W/(t+1),H/2)) 
    txt.draw(surface) 

    return surface.get_npimage() 

clip = mpy.VideoClip(make_frame, duration=duration) 
clip.write_videofile(figpath + 'trax_0.mp4', fps=fps) 

clip.ipython_display(fps=fps, width=W, autoplay=0, loop=0) 

Chciałbym być w stanie stworzyć animowany GIF stosując opóźnienie między każdym etapie cykl.

Odpowiedz

1
#!/usr/bin/env python3 

import numpy as np 
import gizeh as gz 
import moviepy.editor as mpy 

W,H = 128,128 # 128x128 pixel 
duration = 2 # 2 seconds 
ncircles = 20 # Number of circles 

def make_frame(t): 

    surface = gz.Surface(W,H) 

    for i in range(ncircles): 
     angle = 2*np.pi*(1.0*i/ncircles+t/duration) 
     center = W*(0.5+ gz.polar2cart(0.1,angle)) 
     circle = gz.circle(r= W*(1.0-1.0*i/ncircles), 
           xy= center, fill= (i%2,i%2,i%2)) 
     circle.draw(surface) 

    return surface.get_npimage() 

clip = mpy.VideoClip(make_frame, duration=duration) 
clip.write_gif("circles.gif",fps=15, opt="OptimizePlus", fuzz=10) 

enter image description here

2

Spróbuj użyć MoviePy - modułu od autora Gizeh.
Spójrz na dobry artykuł, gdzie Gizeh i MoviePy są wykorzystywane do animacji: http://zulko.github.io/blog/2014/09/20/vector-animations-with-python/

+1

Zrobiłem to już. Moje pytanie brzmi: jak używać "jawnego" cyklu do kontrolowania wymiarów i współrzędnych zamiast parametru funkcji "t" – Hugo

+0

można przesuwać predefiniowane współrzędne i wymiary dla każdego "t" do słownika i dostęp do nich z funkcji "make_frame" – Delimitry

+1

Jeśli próbowałeś już filmupy, zaktualizuj kod w swoim pytaniu. – Delimitry

Powiązane problemy