零基础Python开发「图片批量转MP4视频」工具,本地离线、免费无水印!
做自媒体、剪辑视频、制作数字人素材、相册宣传片的朋友,大概率都遇到过这个痛点:
一堆高清图片,想要合成连贯的MP4视频,网上工具要么强制加水印 、要么限制分辨率、要么需要付费会员,批量处理还得开VIP。

今天教大家用 30行左右Python代码 ,手写一个免费、无水印、本地离线、批量转换的图片转视频工具。
支持自定义帧率、分辨率、自动排序、批量合成,写完一次,终身免费使用,还能搭配HeyGen数字人、开源TTS配音做完整AI视频!
📑 文章目录
🔥 工具核心优势(吊打在线工具)
-
完全免费:无会员、无水印、无次数限制
-
本地离线运行:不上传图片,保护隐私素材
-
自定义参数:自由设置帧率、视频分辨率、图片单帧时长
-
全自动批量处理:自动读取文件夹所有图片,智能排序
-
格式兼容全:支持 jpg、jpeg、png、bmp 常见图片格式
-
画质无损:原生合成,不压缩模糊画质
🛠 开发依赖环境
我们核心用到两个Python库:
-
opencv-python:专业视频合成、图像读取处理
-
os:Python内置库,读取文件夹图片、遍历文件
打开终端,一键安装依赖:
bash
pip install opencv-python
💻 完整可运行源码(新增转场+分辨率适配)
本次升级版新增核心功能:自动统一1080P分辨率、智能黑边填充(无拉伸变形)、全局淡入淡出转场、首尾渐变开场结尾,完全达到自媒体成片质量。
python
import cv2
import os
import numpy as np
def images_to_video(
image_folder,
output_video,
fps=5,
target_size=(1920, 1080),
fade_duration=0.5
):
"""
多张图片批量转MP4视频【增强版】
新增:统一分辨率、自动补黑边防变形、淡入淡出转场
:param image_folder: 图片文件夹路径
:param output_video: 输出视频路径
:param fps: 帧率
:param target_size: 目标分辨率 默认1080P
:param fade_duration: 单张图片淡入淡出总时长(秒)
"""
img_suffix = ('.jpg', '.jpeg', '.png', '.bmp')
img_list = [f for f in os.listdir(image_folder) if f.lower().endswith(img_suffix)]
img_list.sort()
if not img_list:
print("❌ 文件夹内未找到任何图片!")
return
target_w, target_h = target_size
fade_frame_num = int(fade_duration * fps / 2)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video_writer = cv2.VideoWriter(output_video, fourcc, fps, (target_w, target_h))
def resize_and_pad(img):
"""统一尺寸,等比例缩放+补黑边,杜绝拉伸变形"""
h, w = img.shape[:2]
scale = min(target_w / w, target_h / h)
new_w, new_h = int(w * scale), int(h * scale)
img_resized = cv2.resize(img, (new_w, new_h))
# 计算居中填充黑边
top = (target_h - new_h) // 2
bottom = target_h - new_h - top
left = (target_w - new_w) // 2
right = target_w - new_w - left
return cv2.copyMakeBorder(
img_resized, top, bottom, left, right,
cv2.BORDER_CONSTANT, value=[0, 0, 0]
)
def fade_transition(frame1, frame2, fade_frames):
"""生成两张图片之间的淡入淡出过渡帧"""
frames = []
for i in range(fade_frames):
alpha = i / fade_frames
blend = cv2.addWeighted(frame1, 1 - alpha, frame2, alpha, 0)
frames.append(blend)
return frames
frame_buffer = []
for idx, img_name in enumerate(img_list):
img_path = os.path.join(image_folder, img_name)
frame = cv2.imread(img_path)
if frame is None:
print(f"⚠️ 读取失败:{img_name}")
continue
# 统一尺寸
frame_pad = resize_and_pad(frame)
frame_buffer.append(frame_pad)
print(f"✅ 预处理完成:{img_name}")
# 逐帧写入 + 首尾淡入淡出 + 图片间转场
total_img = len(frame_buffer)
stay_frames = int(1.0 * fps)
for i in range(total_img):
current_frame = frame_buffer[i]
# 开头淡入
if i == 0:
for n in range(fade_frame_num):
alpha = n / fade_frame_num
blank = np.zeros_like(current_frame)
fade_in = cv2.addWeighted(blank, 1 - alpha, current_frame, alpha, 0)
video_writer.write(fade_in)
# 主体停留帧
for _ in range(stay_frames):
video_writer.write(current_frame)
# 图片之间淡出转场(最后一张不淡出)
if i != total_img - 1:
next_frame = frame_buffer[i+1]
trans_frames = fade_transition(current_frame, next_frame, fade_frame_num)
for f in trans_frames:
video_writer.write(f)
# 结尾淡出
elif i == total_img - 1:
for n in range(fade_frame_num, 0, -1):
alpha = n / fade_frame_num
blank = np.zeros_like(current_frame)
fade_out = cv2.addWeighted(blank, 1 - alpha, current_frame, alpha, 0)
video_writer.write(fade_out)
video_writer.release()
print(f"\n🎉 高清视频合成完成!保存路径:{output_video}")
# ==================== 自定义配置区 ====================
if __name__ == "__main__":
IMAGE_FOLDER = "./images"
OUTPUT_VIDEO = "./output.mp4"
FPS = 8
RESOLUTION = (1920, 1080) # 可改为 (1280,720) 720P
FADE_TIME = 0.6 # 转场时长
images_to_video(
image_folder=IMAGE_FOLDER,
output_video=OUTPUT_VIDEO,
fps=FPS,
target_size=RESOLUTION,
fade_duration=FADE_TIME
)
📝 超详细使用教程(新手零门槛)
第一步:新建文件夹
-
在桌面新建一个文件夹,比如命名为 图片转视频
-
在文件夹内新建子文件夹,命名为 images
-
把需要合成的所有图片,全部放入 images文件夹
💡 小技巧:图片按 1.jpg、2.jpg、3.jpg 命名,排序更精准,避免画面错乱
第二步:修改配置参数
代码底部「自定义配置区」可自由修改:
- FPS帧率:数值越小,单张图片停留越久
-
相册慢播放:3-6帧
-
正常短视频:24-30帧
- OUTPUT_VIDEO:自定义视频保存名称和路径
第三步:运行代码
直接运行py文件,等待几秒,即可在根目录生成无水印高清 output.mp4!
✨ 高阶优化 & 自媒体实用搭配
1. 适配AI数字人场景(搭配HeyGen)
很多人用HeyGen做数字人视频,需要静态背景图轮播视频,用这个工具批量合成背景视频,再导入HeyGen叠加数字人,画面质感远超单图静态背景。
2. 搭配开源AI配音
用之前推荐的 ChatTTS、CosyVoice 生成配音音频,再用剪映合并视频和音频,全程免费无版权,完美制作自媒体口播、科普视频。
3. 进阶功能拓展(可自行升级)
-
已更新:全局淡入淡出转场 + 首尾渐变特效
-
已更新:智能统一分辨率、自动补黑边,彻底解决画面拉伸变形
-
批量遍历多级文件夹、自动批量生成多个视频
-
添加进度条、异常报错提示
💡 写在最后
一个简单的Python脚本,就能替代各类付费剪辑工具、在线转换网站。
最大的优势就是 安全、免费、可控,自媒体素材、私密照片不用上传第三方平台,本地一键合成高清视频。
不用懂复杂开发,复制代码、改个参数就能直接用,新手也能轻松拿捏!