2015-05-31 8 views
12

Ich bin in der Lage, ein einfaches Diagramm mit Formen und Zahlen zu erstellen. ich den folgenden Code verwenden:Erstellen einer Animation mit Python 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() 

ich habe auch eine Version mit 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) 

ich zwischen jedem Schritt der Verwendung einer Zeitverzögerung animiert GIF in die Lage sein möchte, erstellen Zyklus.

Antwort

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

Versuchen Sie, MoviePy - ein Modul des Autors von Gizeh zu verwenden.
Schauen Sie sich einen guten Artikel, in dem Giseh und MoviePy sind für die Animation verwendet: http://zulko.github.io/blog/2014/09/20/vector-animations-with-python/

+1

ich es bereits getan habe. Meine Frage ist, wie ich einen "expliziten" Zyklus zur Steuerung von Dimensionen und Koordinaten anstelle des 't' Funktionsparameters – Hugo

+0

benutze. Sie können vordefinierte Koordinaten und Dimensionen für jedes 't' in das Wörterbuch verschieben und von 'make_frame' auf die Funktion – Delimitry

+1

zugreifen Wenn Sie movepy bereits ausprobiert haben, aktualisieren Sie den Code in Ihrer Frage. – Delimitry

Verwandte Themen