屏幕录制GIF
工具展示
工具介绍
通过Cursor编写屏幕录制GIF工具,通过录制屏幕指定区域,并最后生成gif文件,动态播放。后续教程中的gif图片均通过该工具录制。
为了优化文件的大小,降低了图片的质量。
项目概述
这是一个使用Python开发的屏幕录制工具,可以录制屏幕指定区域并生成GIF动画。主要特点包括:
- 可视化区域选择
- 实时录制控制
- 自定义GIF生成参数
- 智能帧差异检测
- 图像质量优化
技术栈
- Python 3.x
- PyQt6:GUI界面框架
- mss:屏幕截图
- PIL:图像处理
- imageio:GIF生成
- numpy:图像数据处理
项目结构
项目由以下主要模块组成:
main.py
:主程序入口,实现GUI界面screen_recorder.py
:屏幕录制核心功能gif_generator.py
:GIF生成和优化region_selector.py
:区域选择器requirements.txt
:依赖管理
实现步骤
1. 项目初始化
# 创建虚拟环境并安装依赖
python -m venv venv
source venv/bin/activate # Windows使用: venv\\Scripts\\activate
pip install -r requirements.txt
2. 区域选择器实现
region_selector.py
实现了一个透明窗口,允许用户通过鼠标拖拽选择录制区域。主要特点:
- 全屏透明覆盖
- 实时显示选择区域
- 鼠标事件处理
- 选择完成信号发送
3. 屏幕录制器实现
screen_recorder.py
负责核心的录制功能:
- 使用mss库进行屏幕截图
- 实现帧差异检测算法
- 优化录制性能
- 内存管理
关键优化:
# 帧差异检测
diff = np.mean(np.abs(frame_array - self.last_frame_array)) / 255.0
if diff > self.diff_threshold:
self.frames.append(frame)
4. GIF生成器实现
gif_generator.py
处理录制帧的优化和GIF生成:
- 图像预处理(锐化、对比度增强)
- 智能缩放
- 调色板优化
- 压缩优化
关键优化:
# 图像增强
enhancer = ImageEnhance.Sharpness(frame)
frame = enhancer.enhance(1.5)
# 两步缩放获得更好的效果
frame = frame.resize((new_size[0]*2, new_size[1]*2), Image.Resampling.LANCZOS)
frame = frame.resize(new_size, Image.Resampling.BICUBIC)
5. 主界面实现
main.py
实现了用户界面:
- 录制控制
- 参数设置
- 文件保存
- 状态显示
6. 性能优化
- 录制优化:
- 使用帧差异检测减少重复帧
- 优化录制帧率
- 内存管理
- GIF生成优化:
- 全局调色板
- 智能缩放算法
- 图像质量增强
- 压缩参数调整
特色功能
- 智能帧处理:
- 只保存发生变化的帧
- 自动调整帧率
- 优化内存使用
- 图像质量优化:
- 多级图像增强
- 智能缩放
- 锐化处理
- 调色板优化
- 用户友好界面:
- 直观的区域选择
- 实时状态显示
- 自定义参数调节