2017-06-19 131 views
0

這裏是一個非常簡單的函數,我試圖在gif圖像上繪製一個半徑變化的圓。我可以用我的test_clip函數成功繪製一個靜態的紅色圓圈,但我需要線索如何合併make_frame(t)函數,以便達到所需的結果:在gif或視頻上改變半徑的圓。我在這裏使用Gizeh模塊。謝謝。繪製一個半徑變化的圓形

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

W,H = 128,128 # width, height, in pixels 
duration = 2 # duration of the clip, in seconds 


def make_frame(t): 
    surface = gizeh.Surface(W,H, bg_color=(255,255,255)) 
    radius = W*(1+ (t*(duration-t))**2)/6 
    circle = gizeh.circle(radius, xy = (W/2,H/2), fill=(1,0,0)) 
    circle.draw(surface) 
    return surface.get_npimage() 

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


def test_clip(clip): 

    w, h = clip.size 

    def fl(im): 

     surface = gizeh.Surface.from_image(im) 
     circle = gizeh.circle(r=30, xy=[w/2,h/2], fill=(1,0,0)) 
     circle.draw(surface) 
     return surface.get_npimage() 

    return clip.fl_image(fl) 

im = mpy.VideoFileClip("example10.gif") 
cc = im.fx(test_clip) 
cc.write_gif("test.gif") 

回答

0

如果我正確地理解了你,對不起,如果我沒有,你想要一個改變大小的圓圈。也許你可以將半徑設爲循環,每0.016秒(60 fps)更改一次半徑。

希望它有幫助!

對評論的反應:是的。如果你在0.5秒內停止增加半徑並再次開始減小它,你將會有一個很好的脈動循環。

+0

您是否有一個循環結構? –