欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用Python將動態(tài)GIF圖片倒放播放的方法

 更新時間:2016年11月02日 14:41:01   投稿:mrr  
GIF(Graphics Interchange Format) 是一種可以用來呈現(xiàn)動畫效果的圖片格式,原理就是保存很多幀(Frame)靜態(tài)圖像,然后連續(xù)呈現(xiàn)。這篇文章主要介紹了用Python將動態(tài)GIF圖片倒放播放的方法,需要的朋友可以參考下

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

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

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

pip install --upgrade pillow -i http://pypi.douban.com/simple
python -c "import PIL; print(PIL.VERSION, '\t', PIL.PILLOW_VERSION)"
// 1.1.7 3.4.2
利用 Pillow 可以先讀取圖片文件并判斷該圖片是否為動態(tài)圖片及其幀數(shù):
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 參數(shù)和 append_images 可以一次性將多幀圖像同時存入 GIF 圖片,于是我們可以這樣來生成倒序播放的圖片:

from PIL import Image, ImageSequence
with 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將動態(tài)GIF圖片倒放播放的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 詳解Python字典小結

    詳解Python字典小結

    這篇文章主要介紹了詳解Python字典小結,詳細的介紹了什么是字典且創(chuàng)建字典和示例,非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • python單例模式獲取IP代理的方法詳解

    python單例模式獲取IP代理的方法詳解

    在使用python對網(wǎng)頁進程訪問時,以防被禁止,可用使用代理IP的方法減少被禁的可能,下面這篇文章主要給大家介紹了關于python單例模式獲取IP代理的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-09-09
  • python嵌套異常的兩種處理器

    python嵌套異常的兩種處理器

    在Python中,異常也可以嵌套,本文主要介紹了python嵌套異常的兩種處理器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • python 求10個數(shù)的平均數(shù)實例

    python 求10個數(shù)的平均數(shù)實例

    今天小編就為大家分享一篇python 求10個數(shù)的平均數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python字典,函數(shù),全局變量代碼解析

    Python字典,函數(shù),全局變量代碼解析

    這篇文章主要介紹了Python字典,函數(shù),全局變量代碼解析,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 如何處理Python3.4 使用pymssql 亂碼問題

    如何處理Python3.4 使用pymssql 亂碼問題

    這篇文章主要介紹了如何處理Python3.4 使用pymssql 亂碼問題的相關資料,涉及到python pymssql相關知識,對此感興趣的朋友一起學習吧
    2016-01-01
  • Python發(fā)送email的3種方法

    Python發(fā)送email的3種方法

    這篇文章主要介紹了Python發(fā)送email的3種方法,本文講解了使用登錄郵件服務器方法、調用sendmail命令、使用smtp服務來發(fā)送三種方法,需要的朋友可以參考下
    2015-04-04
  • Pandas如何對帶有Multi-column(多列名稱)的數(shù)據(jù)排序并寫入Excel中

    Pandas如何對帶有Multi-column(多列名稱)的數(shù)據(jù)排序并寫入Excel中

    這篇文章主要介紹了Pandas如何對帶有Multi-column(多列名稱)的數(shù)據(jù)排序并寫入Excel中問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python實現(xiàn)Word表格轉成Excel表格的示例代碼

    Python實現(xiàn)Word表格轉成Excel表格的示例代碼

    這篇文章主要介紹了Python實現(xiàn)Word表格轉成Excel表格的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 用Python實現(xiàn)定時備份Mongodb數(shù)據(jù)并上傳到FTP服務器

    用Python實現(xiàn)定時備份Mongodb數(shù)據(jù)并上傳到FTP服務器

    這篇文章主要介紹了用Python實現(xiàn)定時備份Mongodb數(shù)據(jù)并上傳到FTP服務器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論