绘制一个半径变化的圆圈

时间:2017-06-19 13:05:59

标签: python moviepy

这是一个非常简单的功能,我试图在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")

1 个答案:

答案 0 :(得分:0)

如果我正确理解你,请原谅我,如果我没有,你想要一个改变大小的圆圈。也许你可以将半径设为for循环,每隔0.016秒(60 fps)更改半径。

希望它有所帮助!

对评论的反应:是的。如果你停止在0.5秒内增加半径并再次开始减小半径,你就会有一个很好的脉动循环圈。

相关问题