2017-06-19 3 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秒(60fps)ごとに半径を変更するループの半径を作ることができます。

希望すると助かります!

コメントに対する反応:はい。あなたが0.5秒で半径を上げるのを止めてもう一度それを減らし始めるならば、あなたは脈動円の素晴らしいループを持っています。

+0

ループ構造を念頭に置いていますか? –

関連する問題