文/IT可達鴨
圖/IT可達鴨、網絡
前言
最近在寫技術文檔的時候,發現一個問題。對於每個技術步驟,都需要一個截圖,這樣下來整篇文檔都是截圖,顯得不是特別的專業。
為了解決這個問題,我想到一個方法,就是把技術文檔中,每個模塊系列截圖生成一個動態GIF,這樣就可以節省大量的篇幅,而且顯得有技術水平一些。
舉個例子:我們要在pycharm中安裝一個python包,就可以按照以下的步驟去做。
是不是非常方便?這裡我把源碼分享給大家,來,上代碼。
- 環境配置
python版本: 3.6.0
編輯器: pycharm
項目所需要的環境安裝包
<code>pip
install imageio/<code>
第一步:導包
imageio:這個第三方庫可以導入很多格式類型的照片,然後又可以將其導出成各種格式的照片,非常好用。
os:目錄操作、路徑操作、文件操作的包。
<code># encoding:utf-8
import
imageioimport
os/<code>
第二步:生成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_namein
image_list: frames.append(imageio.imread(image_name)) imageio.mimsave(gif_name, frames,'GIF'
, duration=duration)return
/<code>
第三步:獲取所有的圖片
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, filesin
os.walk(file_dir):for
filein
files:for
tailin
tail_list:if
file.endswith(tail): file_list.append(os.path.join(root, file))break
file_list.sort()return
file_list/<code>
第四步:主函數
確定好原始圖片存放的目錄,以及生成的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算法。最後,感謝大家的閱讀,祝大家工作生活愉快!