Python番外篇:教你如何编写一个GIF录屏工具

246 阅读1分钟

本人已参与【新人创作礼】活动,一起开启掘金创作之路。 (本文首发于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如下:
GIF


好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!