Python利用PIL實(shí)現(xiàn)多張圖片合成gif動(dòng)畫(huà)的案例詳解
- Python 由多張圖片合成gif動(dòng)畫(huà)
- 案例
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) #打開(kāi)圖形 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("動(dòng)畫(huà)繪制開(kāi)始") 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("動(dòng)畫(huà)繪制完成,用時(shí):", round(end_time-start_time, 6)) print("平均動(dòng)畫(huà)繪制完成,用時(shí):", round((end_time-start_time)/num, 6)) print("平均圖形繪制用時(shí):", round(sum(plot_time)/len(plot_time), 6)) print("平均圖形保存用時(shí):", round(sum(save_time)/len(save_time), 6)) print("平均圖形打開(kāi)用時(shí):", round(sum(open_time)/len(open_time), 6))
- 動(dòng)畫(huà)生成結(jié)果就不放了
- 讓我們看看什么操作最耗時(shí)
動(dòng)畫(huà)繪制開(kāi)始
動(dòng)畫(huà)繪制完成,用時(shí): 3.61503
平均動(dòng)畫(huà)繪制完成,用時(shí): 0.03615
平均圖形繪制用時(shí): 0.004437
平均圖形保存用時(shí): 0.146415
平均圖形打開(kāi)用時(shí): 0.000287
- 這是保存圖形用時(shí)隨圖像數(shù)量的變化
- 考慮到繪制點(diǎn)數(shù)的增長(zhǎng),這是合理的
- 這是圖形打開(kāi)用時(shí)
- 變換不大,這是合理的
- 這是每次scatter的用時(shí)
- 看上去也比較合理
- 那我們?cè)倏纯措S著圖片數(shù)量的增長(zhǎng),繪制動(dòng)畫(huà)的用時(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))
- 這就比較迷
- 不過(guò)問(wèn)題不大
到此這篇關(guān)于Python利用PIL實(shí)現(xiàn)多張圖片合成gif動(dòng)畫(huà)的案例詳解的文章就介紹到這了,更多相關(guān)Python PIL合成gif動(dòng)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬取分析超級(jí)大樂(lè)透歷史開(kāi)獎(jiǎng)數(shù)據(jù)
這篇文章主要介紹了python爬取分析超級(jí)大樂(lè)透歷史開(kāi)獎(jiǎng)數(shù)據(jù),本次使用了requests和beautifulsoup庫(kù)進(jìn)行數(shù)據(jù)的爬取,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02python常用數(shù)據(jù)結(jié)構(gòu)字典梳理
這篇文章主要介紹了python常用數(shù)據(jù)結(jié)構(gòu)字典梳理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08python 借助numpy保存數(shù)據(jù)為csv格式的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python 借助numpy保存數(shù)據(jù)為csv格式的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Python中使用kitti數(shù)據(jù)集實(shí)現(xiàn)自動(dòng)駕駛(繪制出所有物體的行駛軌跡)
這篇文章主要介紹了Python中使用kitti數(shù)據(jù)集實(shí)現(xiàn)自動(dòng)駕駛——繪制出所有物體的行駛軌跡,本次內(nèi)容主要是畫(huà)出kitti車的行駛的軌跡,需要的朋友可以參考下2022-06-06Python結(jié)合Flask框架構(gòu)建一個(gè)簡(jiǎn)易的遠(yuǎn)程控制系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何使用Python與Flask框架構(gòu)建一個(gè)簡(jiǎn)易的遠(yuǎn)程控制系統(tǒng),能夠遠(yuǎn)程執(zhí)行操作命令(如關(guān)機(jī)、重啟、鎖屏等),還具備實(shí)時(shí)屏幕截圖功能,需要的可以參考下2025-03-03巧用python和libnmapd,提取Nmap掃描結(jié)果
本文將會(huì)講述一系列如何使用一行代碼解析 nmap 掃描結(jié)果,其中會(huì)在 Python 環(huán)境中使用到 libnmap 里的 NmapParser 庫(kù),這個(gè)庫(kù)可以很容易的幫助我們解析 nmap 的掃描結(jié)果2016-08-08