File size: 860 Bytes
8a4be01
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cv2
import os
import zipfile
from PIL import Image

def frames_to_video(frames, output_path, fps=10):
    """Compiles a list of PIL images into an MP4 video."""
    if not frames: return None
    width, height = frames[0].size
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
    for frame in frames:
        out.write(cv2.cvtColor(np.array(frame), cv2.COLOR_RGB2BGR))
    out.release()
    return output_path

def export_to_zip(frames, zip_name="frames.zip"):
    """Saves all frames to a temporary ZIP for batch download."""
    with zipfile.ZipFile(zip_name, 'w') as zipf:
        for i, frame in enumerate(frames):
            frame_path = f"frame_{i:04d}.png"
            frame.save(frame_path)
            zipf.write(frame_path)
            os.remove(frame_path)
    return zip_name