簡單代碼一學就會,Python生成GIF動圖

文/IT可達鴨

圖/IT可達鴨、網絡

前言

最近在寫技術文檔的時候,發現一個問題。對於每個技術步驟,都需要一個截圖,這樣下來整篇文檔都是截圖,顯得不是特別的專業。

為了解決這個問題,我想到一個方法,就是把技術文檔中,每個模塊系列截圖生成一個動態GIF,這樣就可以節省大量的篇幅,而且顯得有技術水平一些。


簡單代碼一學就會,Python生成GIF動圖


舉個例子:我們要在pycharm中安裝一個python包,就可以按照以下的步驟去做。

簡單代碼一學就會,Python生成GIF動圖

是不是非常方便?這裡我把源碼分享給大家,來,上代碼。

  • 環境配置

python版本: 3.6.0

編輯器: pycharm

項目所需要的環境安裝包

<code>

pip

install imageio/<code>

第一步:導包

簡單代碼一學就會,Python生成GIF動圖

imageio:這個第三方庫可以導入很多格式類型的照片,然後又可以將其導出成各種格式的照片,非常好用。

os:目錄操作、路徑操作、文件操作的包。


<code># encoding:utf-

8

import

imageio

import

os/<code>

第二步:生成GIF的函數

簡單代碼一學就會,Python生成GIF動圖

create_gif 函數,根據輸入的圖片文件路徑,按順序生成GIF。其中duration接收的參數單位是秒,也就是動圖中每一幀的顯示時間。

<code>

def

create_gif

(image_list, gif_name, duration =

1.0

)

:

''' 生成GIF :param image_list: :param gif_name: :param duration: :return: '''

frames = []

for

image_name

in

image_list: frames.append(imageio.imread(image_name)) imageio.mimsave(gif_name, frames,

'GIF'

, duration=duration)

return

/<code>

第三步:獲取所有的圖片

簡單代碼一學就會,Python生成GIF動圖

get_all_all_file: 獲取指定文件夾下的所有圖片文件,這裡只獲取目錄的第一層文件,並且按文件名進行排序。如果想遞歸獲取可以參考之前的文章《用python給女朋友畫張素描,網友:程序員有女朋友?》裡面有介紹如何遞歸獲取文件。

<code>

def

get_all_file

(file_dir, tail_list=

(

'.jpg'

,

'.png'

,

'.jpeg'

)

)

:

""" 獲取所有的文件名 :param file_dir: 指定目錄 :param tail_list: 指定文件類型(後綴名) :return: """

file_list = []

for

root, dirs, files

in

os.walk(file_dir):

for

file

in

files:

for

tail

in

tail_list:

if

file.endswith(tail): file_list.append(os.path.join(root, file))

break

file_list.sort()

return

file_list/<code>

第四步:主函數


簡單代碼一學就會,Python生成GIF動圖

確定好原始圖片存放的目錄,以及生成的gif存放的目錄位置,設置每張圖片展示的時間。

<code>

if

__name__ ==

'__main__'

: input_dir, output_dir =

'data'

,

'output'

duration =

1.5

file_list = get_all_file(input_dir) create_gif(file_list, os.path.

join

(output_dir,

'result.gif'

), duration/<code>

結語

代碼量不多,這就是python,有人喜歡它的簡潔,有人喜歡它便捷。不可否認的是,現在連小學都開設python課程了。當然,python 也有它的弊端,它做不了大型高併發的後端,但是,對於人工智能的開發,python有它獨特的優勢。

如果有疑問想獲取源碼,可以關注後,在後臺私信我,回覆:python動圖。 我把源碼發你。持續關注"

IT可達鴨"每天除了分享有趣Python源碼,還會介紹NLP算法。最後,感謝大家的閱讀,祝大家工作生活愉快!


分享到:


相關文章: