目錄
1、需求分析
2、技術分析
3、需求詳細分解
4、測驗介面
5、show you code
6、總結:
gif 的文章上次實作了圖片的合成,看下我們上次的需求分解
1、需求分析
我的需求就是能錄制gif 圖片,因為第一次做這種東西,所以需要分解需求,
步驟一:我需要能錄屏,也就是截屏功能,將當前螢屏保存,技術方案暫時沒定,這次實作
步驟二:我需要能把截屏的圖片進行合并,合成gif圖片,已經找到合適的庫,立即做,已實作
步驟三:將python檔案進行界面友好化,非核心功能,延期,
步驟二已經實作,步驟一我們這次實作
2、技術分析
依然使用Pillow實作我呢的錄屏功能,Python使用的3.8 ,Pillow的具體安裝上次的文章中有詳細的情況,
簡單的說就是pip install pillow
上篇鏈接:《Python實體》自己用Python寫個gif生成工具,Pillow 真TM簡單!
3、需求詳細分解
1.實作錄屏功能
2.可以調節錄屏的幀率,防止生成的gif 檔案過大
3.可以選擇錄屏的部磁區域生成
4.可以在開始的時候選擇延時處理
4、測驗介面
我在測驗錄屏功能的代碼:
def takeSnapTest():
m = int(input("請輸入想抓屏多少秒:"))
n = 1
m = frame * m
while n < m:
sleep(sleepTime)
im = ImageGrab.grab()
local = (r"%s.jpg" % (n))
im.save(local, 'jpeg')
n = n + 1
上面的代碼會將螢屏生成圖片保存到當前代碼所在的檔案夾下

從結果可以看到上面的代碼能夠捕獲螢屏,并且生成圖片,可以銜接我之前所做的作業,用圖片合成gif
5、show you code
需求也分析,介面也驗證了,直接擼代碼,
#!/usr/bin/env python
# encoding: utf-8
"""
#Author: 香菜
@time: 2021/8/9 0009 下午 8:55
"""
from time import sleep
from PIL import ImageGrab
frame = 10
sleepTime = 1.0 / frame
def makeGif(imgList):
im = imgList[0]
im.save('beauty.gif', save_all=True, append_images=imgList[1:], loop=0, duration=sleepTime)
def takeSnap():
m = int(input("請輸入想抓屏多少秒:"))
x = int(input("多少秒后開始,0 立即開始:"))
if x != 0:
sleep(x)
n = 1
m = frame * m
imgList = []
while n < m:
sleep(sleepTime)
im = ImageGrab.grab()
w, h = im.size
cropim = im.crop((0, 0, w / 2, h / 2))
# local = (r"%s.jpg" % (n))
imgList.append(cropim)
# cropim.save(local, 'jpeg')
n = n + 1
return imgList
if __name__ == '__main__':
imgList = takeSnap()
makeGif(imgList)
測驗一下,運行一下看看結果

基本上完成了我的需求,
6、總結:
1、可以優化坐標的選取,我現在設定的直接取左上角,可以在設計界面的時候由用戶選取
2、可以優化速度,現在的速度沒有經過精確計算,似乎有點快,懶得出來了,交給你了,
3、下面要做的是搞個界面,有點難,我也不擅長,可能會放棄,你加油
4、寫代碼的程序中遇到的問題,圖片的截取,差點沒找到介面要用其他的庫去截取
原始碼地址:https://download.csdn.net/download/perfect2011/21012239
原創不易,求點贊支持
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/293620.html
標籤:python
