这是一个非常简单的功能,我试图在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)
如果我正确理解你,请原谅我,如果我没有,你想要一个改变大小的圆圈。也许你可以将半径设为for循环,每隔0.016秒(60 fps)更改半径。
希望它有所帮助!
对评论的反应:是的。如果你停止在0.5秒内增加半径并再次开始减小半径,你就会有一个很好的脉动循环圈。