2017-06-19 80 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

您是否有一个循环结构? –