本人已参与【新人创作礼】活动,一起开启掘金创作之路。 (本文首发于CSDN) hello,大家好,我是wangzirui32,今天我们来学习如何编写一个GIF录屏工具,开始学习吧!
1. 项目准备
我们需要PIL库对屏幕进行截取,使用imageio对截取的图像进行拼接,合成为GIF动图,安装命令如下:
pip install pillow imageio
2. 项目结构
项目文件夹内要包含一个images文件夹,用来存放图片,接下来,创建一个Python文件,这个就为项目的主要文件。
3. 编写代码
import imageio
from PIL import ImageGrab
import time
import os
# 获取输入信息
grab_time = int(float(input("请输入截取秒数:")))
bbox = eval(input("请输入截取范围 格式(x1, y1, x2, y2):"))
duration_time = float(input("请输入每张图片显示秒数:"))
# 删除文件夹中的所有图片
def del_all_images():
for filename in os.listdir("images"):
os.remove("images/" + filename)
# 截取屏幕
def grab():
del_all_images()
count = 0 # 计数变量
# 获取开始时的时间戳
start_time = int(time.time())
# 如果当前时间戳减去开始时间戳大于等于录制时间就停止录制
while not ((int(time.time()) - start_time) >= grab_time):
count += 1
image = ImageGrab.grab(bbox) # 截屏
image.save("images/{}.png".format(count)) # 保存图片
return count
# 合成GIF
def create_gif(count):
frames = []
# 根据计数变量使用imageio读取图片
for i in range(1, count+1):
frames.append(imageio.imread("images/{}.png".format(i)))
# 合成
imageio.mimsave("output.gif", frames, duration=duration_time)
del_all_images()
count = grab()
create_gif(count)
4. 运行代码
运行代码,输入以下信息测试:
请输入截取秒数:3
请输入截取范围 格式(x1, y1, x2, y2):(0, 0, 700, 700)
请输入每张图片显示秒数:0.2
截取GIF如下:
好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!