Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例詳解
- Python 由多張圖片合成gif動畫
- 案例
import os figure_save_path = "file_fig_test" import warnings warnings.filterwarnings("error") import numpy as np np.random.seed(0) import matplotlib.pyplot as plt from PIL import Image import time num = 100 gif_frames = [] open_time = [] save_time = [] plot_time = [] for i in range(num): #圖形繪制 start_time = time.time() plt.scatter(np.random.random(), np.random.random()) end_time = time.time() plot_time.append(end_time-start_time) #創(chuàng)建圖形保存文件夾 if not os.path.exists(figure_save_path): os.makedirs(figure_save_path) else: pass #保存圖形 start_time = time.time() plt.savefig(os.path.join(figure_save_path, str(i) + ".jpg")) end_time = time.time() save_time.append(end_time-start_time) #打開圖形 start_time = time.time() img = Image.open(os.path.join(figure_save_path, str(i) + ".jpg")) end_time = time.time() open_time.append(end_time-start_time) gif_frames.append(img) print("動畫繪制開始") start_time = time.time() gif_frames[0].save("test.gif", save_all=True, append_images=gif_frames[1:], duration=200, loop=0) end_time = time.time() print("動畫繪制完成,用時:", round(end_time-start_time, 6)) print("平均動畫繪制完成,用時:", round((end_time-start_time)/num, 6)) print("平均圖形繪制用時:", round(sum(plot_time)/len(plot_time), 6)) print("平均圖形保存用時:", round(sum(save_time)/len(save_time), 6)) print("平均圖形打開用時:", round(sum(open_time)/len(open_time), 6))
- 動畫生成結果就不放了
- 讓我們看看什么操作最耗時
動畫繪制開始
動畫繪制完成,用時: 3.61503
平均動畫繪制完成,用時: 0.03615
平均圖形繪制用時: 0.004437
平均圖形保存用時: 0.146415
平均圖形打開用時: 0.000287
- 這是保存圖形用時隨圖像數(shù)量的變化
- 考慮到繪制點數(shù)的增長,這是合理的
- 這是圖形打開用時
- 變換不大,這是合理的
- 這是每次scatter的用時
- 看上去也比較合理
- 那我們再看看隨著圖片數(shù)量的增長,繪制動畫的用時變化
gif_time = [] for i in range(20, 100): new_frames = gif_frames[:i] start_time = time.time() new_frames[0].save(str(i)+".gif", save_all=True, append_images=gif_frames[1:], duration=200, loop=0) end_time = time.time() gif_time.append(end_time-start_time) print("finished:", str(i))
- 這就比較迷
- 不過問題不大
到此這篇關于Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例詳解的文章就介紹到這了,更多相關Python PIL合成gif動圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python爬取分析超級大樂透歷史開獎數(shù)據(jù)
這篇文章主要介紹了python爬取分析超級大樂透歷史開獎數(shù)據(jù),本次使用了requests和beautifulsoup庫進行數(shù)據(jù)的爬取,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02python 借助numpy保存數(shù)據(jù)為csv格式的實現(xiàn)方法
今天小編就為大家分享一篇python 借助numpy保存數(shù)據(jù)為csv格式的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Python中使用kitti數(shù)據(jù)集實現(xiàn)自動駕駛(繪制出所有物體的行駛軌跡)
這篇文章主要介紹了Python中使用kitti數(shù)據(jù)集實現(xiàn)自動駕駛——繪制出所有物體的行駛軌跡,本次內(nèi)容主要是畫出kitti車的行駛的軌跡,需要的朋友可以參考下2022-06-06Python結合Flask框架構建一個簡易的遠程控制系統(tǒng)
這篇文章主要為大家詳細介紹了如何使用Python與Flask框架構建一個簡易的遠程控制系統(tǒng),能夠遠程執(zhí)行操作命令(如關機、重啟、鎖屏等),還具備實時屏幕截圖功能,需要的可以參考下2025-03-03