国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

用Python將動態GIF圖片倒放播放的方法

2019-11-25 16:30:20
字體:
來源:轉載
供稿:網友

這次讓我們一個用 Python 做一個小工具:將動態 GIF 圖片倒序播放!

GIF(Graphics Interchange Format) 是一種可以用來呈現動畫效果的圖片格式,原理就是保存很多幀(Frame)靜態圖像,然后連續呈現。很多簡短的視頻也會被轉換成動態 GIF 呈現,壓縮畫質和去除聲音之后可以有效地減小文件大小。網絡上不計其數的搞笑動圖,幾乎承載了網友大半的歡樂,但是也有人發現,將正常的動畫倒序播放往往可以獲得更搞笑的效果,Reddit 上甚至有一個專門的節點:/r/reversegif。

要做到這一點其實很簡單,只要從原始圖片中提取中間每一幀靜態圖像,然后將順序顛倒之后重新生成一張 GIF 圖片即可。Python 中專門用于處理圖像的庫是 PIL,在 PIL 基礎上由 Alex Clark 等人開發了一個更友好的版本:Pillow。于是首先來安裝(或升級)Pillow:

pip install --upgrade pillow -i http://pypi.douban.com/simplepython -c "import PIL; print(PIL.VERSION, '/t', PIL.PILLOW_VERSION)"http:// 1.1.7 3.4.2利用 Pillow 可以先讀取圖片文件并判斷該圖片是否為動態圖片及其幀數:from PIL import Imagewith Image.open('ani.gif') as im:print(im.is_animated, im.n_frames)

新版本的 Pillow 提供了更多寫入 GIF 的功能:

im.save(out, save_all=True, append_images=[im1, im2, ...])

通過設定 save_all=True 參數和 append_images 可以一次性將多幀圖像同時存入 GIF 圖片,于是我們可以這樣來生成倒序播放的圖片:

from PIL import Image, ImageSequencewith Image.open('ani.gif') as im:if im.is_animated:frames = [f.copy() for f in ImageSequence.Iterator(im)]frames.reverse() # 內置列表倒序方法# 將倒序后的所有幀圖像保存下來frames[0].save('out.gif', save_all=True, append_images=frames[1:])

再來看一個比較明顯的效果:


為了滿足微信2M 圖片大小限制,倒序圖片經過了采樣壓縮處理

如果想要達到鬼畜一些的效果,還可以對所有幀隨機打亂順序:

import random# frames.reverse()random.shuffle(frames)

效果如下:

以上所述是小編給大家介紹的用Python將動態GIF圖片倒放播放的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桦甸市| 乌兰浩特市| 泊头市| 六枝特区| 清远市| 泗水县| 鄯善县| 洛扎县| 上栗县| 绥棱县| 杭州市| 都江堰市| 错那县| 新乡市| 伊宁县| 大冶市| 天台县| 藁城市| 蒙自县| 浮梁县| 遵化市| 灯塔市| 涪陵区| 翼城县| 沂源县| 元谋县| 越西县| 安多县| 于田县| 肥城市| 伽师县| 岑巩县| 长顺县| 五常市| 东光县| 台山市| 朝阳区| 香河县| 兴隆县| 正阳县| 濮阳县|