def create_mtg_gif(name, id, border): if border == 'm': # Modern (post-8th Ed) card_upper_corner = (19, 38) gif_width = 202 - card_upper_corner[0] gif_height = 172 - card_upper_corner[1] elif border == 'c': # Current (post-Magic 2015) card_upper_corner = (17, 34) gif_width = 204 - card_upper_corner[0] gif_height = 173 - card_upper_corner[1] else: # Old (pre-8th Ed) card_upper_corner = (25, 30) gif_width = 196 - card_upper_corner[0] gif_height = 168 - card_upper_corner[1] mtg_card = Image.open(BytesIO(requests.get(get_mtg_image(id)).content)) mtg_card = ImageClip(np.asarray(mtg_card)).resize((222, 310)) get_giphy_gif(name) giphy_gif = (VideoFileClip( 'giphy_gif.mp4', target_resolution=(gif_height, gif_width)).set_pos(card_upper_corner)) if giphy_gif.duration < 2: giphy_gif = giphy_gif.fx(loop, n=1 + int(2 // giphy_gif.duration)) mtg_gif = CompositeVideoClip([mtg_card, giphy_gif]) mtg_gif = mtg_gif.set_start(0).set_duration(giphy_gif.duration) # mtg_gif.write_gif("mtg_gif.gif") mtg_gif.write_videofile("mtg_gif.mp4", codec='libx264', bitrate=str(np.power(10, 7)), verbose=False, progress_bar=False, audio=False, ffmpeg_params=['-pix_fmt', 'yuv420p'])
frame = cv2.imread(os.path.join(image_folder, images[0])) ymi, yma = 20, -40 frame = frame[ymi:yma, :] height, width, layers = frame.shape video = cv2.VideoWriter('rsrc/IDA-BadApple.mp4', fourcc=cv2.VideoWriter_fourcc(*'MP4V'), frameSize=(width, height), fps=15 * 2) for idx, image in enumerate(images): frame = cv2.imread(os.path.join(image_folder, image))[ymi:yma, :] video.write(frame) video.write(frame) print("Frame %s\r" % image, end="") cv2.destroyAllWindows() video.release() from moviepy.editor import VideoFileClip, CompositeVideoClip clip0 = VideoFileClip("../BadApple/gen/rsrc/BadApple.mp4") clip1 = VideoFileClip("rsrc/IDA-Start.mp4") clip2 = VideoFileClip("rsrc/IDA-BadApple.mp4") composite = CompositeVideoClip( [clip2, clip0.resize(.5).set_position((65, 700))]) final_clip = CompositeVideoClip([clip1, composite.set_start(12)]) final_clip.write_videofile("final.mp4", fps=30)