整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          python快速生成gif動圖

          gif圖就是動態(tài)圖,它的原理和視頻有點類似,也是通過很多靜態(tài)圖片合成的.本篇文章主要介紹,如何利用Python快速合成gif圖,主要利用Python的第三方庫imageio

          imageio介紹

          imageio提供了很多方便讀寫圖片的接口、包括讀取網(wǎng)絡(luò)圖片、讀取視頻、生成gif圖等。imageio提供許多的接口,

          imageio API:https://imageio.readthedocs.io/en/latest/userapi.html

          示例程序:https://imageio.readthedocs.io/en/latest/examples.html

          imageio安裝

          pip install imageio
          

          合成gif圖

          import imageio
          def compose_gif():
           img_paths = ["img/1.jpg","img/2.jpg","img/3.jpg","img/4.jpg"
           ,"img/5.jpg","img/6.jpg"]
           gif_images = []
           for path in img_paths:
           gif_images.append(imageio.imread(path))
           imageio.mimsave("test.gif",gif_images,fps=1)
          

          通過fps參數(shù)可以控制合成gif圖片播放圖片的速度和視頻的播放幀率是一樣的,fps參數(shù)越大播放的速率越大,fps越小播放的速度越慢.

          讀取特殊url圖片

          • 讀取imageio的示例圖片
          import imageio
          import matplotlib.pyplot as plt
          def read_special_url_image():
           img = imageio.imread("imageio:chelsea.png")
           plt.imshow(img)
           plt.show()
          
          • 讀取url的網(wǎng)絡(luò)圖片
           url = 'http://upload.wikimedia.org/wikipedia/
           commons/d/de/Wikipedia_Logo_1.0.png'
           img = imageio.imread(url)
          

          在使用url讀取圖片的時候可能會報seek的錯誤,這時候可以改成下面的形式

           url = "https://timgsa.baidu.com/timg?image&quality=80&size=
           b9999_10000&sec=1545324012100&di=77a4ba3d60cdfc60
           d161bd6ed97c2319&imgtype=0&src=http%3A%2F%2Fwww.hxzyt
           j.com%2Fthemes%2Ftheme_3%2Fpc%2Fimages%2Fpython%2Fimg_01.jpg"
          
           img = imageio.imread(imageio.core.urlopen(url).read(), '.jpg')
          

          截圖和讀取粘貼板的圖片

           #截屏
           img = imageio.imread("<screen>")
           #讀取粘貼板的圖片
           img = imageio.imread("<clipboard>")
          

          讀取視頻

          def get_video_per_frame():
           reader = imageio.get_reader("test.mp4")
           for i,im in enumerate(reader):
           print("Mean of frame %i is %1.1f"%(i,im.mean()))
          

          在使用imageio讀取視頻的時候可能會報上面的錯誤,提示需要安裝ffmpeg,可以根據(jù)提示進(jìn)行安裝即可.除此之外,imageio還提供了許多方便的接口,有興趣的可以去了解一下.

          了參加最近的StackExchange的“time”主題比賽,我制作了一個Gif來展示StackOverflow網(wǎng)站從2008年 到今天的發(fā)展歷程:

          這里是一張GIF圖片,可以點擊閱讀原文查看。圖片太大,無法插入公眾號文章。

          第一步是為Internet Archive找到一個合適的API。它支持Memento,這是2013年RFC 7089中定義的基于http的協(xié)議。使用memento_client包裝器,我們可以使用以下Python代碼得到網(wǎng)站最接近給定日期的快照:

          不要忘記安裝memento_client庫哦:

          pip install memento_client

          請注意,此代碼會給我們一個最接近的快照,所以不可能確切地是兩周以前的。

          通過使用一個持續(xù)增加的時間增量,我們可以循環(huán)此段代碼來獲取不同 時間的快照。但我們不只是想獲取URL。我們還想對每一個網(wǎng)頁都做一個截圖。

          以編程方式獲取網(wǎng)頁截圖的最簡單方法可能是使用Selenium。我用Chrome作為驅(qū)動程序;你可以從ChromeDriver網(wǎng)站下載,也可以在使用Homebrew包管理器的Mac電腦上運行以下命令:

          brew install bfontaine /utils/ chromedriver

          我們還需要為Python安裝Selenium:

          pip install selenium

          代碼很短:

          如果你運行上面的代碼,你會看到一個Chrome窗口自動打開,并自動去訪問URL,當(dāng)頁面全部加載后自動關(guān)閉。然后你就獲得了一個該頁面的截圖,文件名是 stackoverflow_20181119211854.png!然而,很快你就會注意到這個截圖中網(wǎng)站的最上面有Wayback Machine(一款網(wǎng)頁備份工具)的頁眉。

          這在手動瀏覽快照時非常方便,但在從Python訪問快照時就不那么方便了。

          幸運的是,我們可以通過稍微修改URL來獲得一個無頁眉的URL:我們可以將 id _ 添加到日期的末尾,以便獲得與機(jī)器爬取時完全相同的頁面。當(dāng)然,這意味著它會鏈接到可能不再存在的CSS和JS文件。通過用im_替代id_,我們也可以得到一個鏈接到經(jīng)過稍微修改的存檔頁面的URL,用它來替換原始的存檔頁面。

          帶有頁眉和重寫鏈接的頁面:

          https://web.archive.org/web/20181119211854/...

          原始頁面,跟爬取的頁面一樣:

          https://web.archive.org/web/20181119211854id_/...

          重寫鏈接后的原始頁面:

          https://web.archive.org/web/20181119211854im_/...

          使用修改后的URL重新運行代碼會得到正確的截圖:

          將這兩段代碼組合起來,我們可以在不同的時間間隔對URL進(jìn)行截圖。你可能想在截圖完成時檢查圖片,并刪除不一致的圖片。例如,谷歌主頁的存檔快照并不是一直都是同一種語言。

          一旦得到了所有的圖片,我們就可以使用Imagemagick生成一個gif:

          convert –delay 50 –loop 1 *.jpg stackoverflow.gif

          我使用了以下參數(shù):

          • –delay 50:每0.5s改變畫面。數(shù)字代表每1/100秒。

          • –loop 1:對所有畫面只循環(huán)一次。默認(rèn)情況下是進(jìn)行無限循環(huán),但在這里沒有意義。

          你可能想要使用-delay參數(shù)進(jìn)行播放,這取決于你有多少圖片以及網(wǎng)站改變的頻率。

          我也做了一個谷歌版本(約10MB)的gif,每秒5幀,并使用了 –delay 20參數(shù)。我使用了與StackOverflow gif相同的延遲時間::每個截圖之間至少間隔5周。通過查看每張圖片的底部,你可以看到每個截圖來自哪一年。

          2018年 12月3日-#experiments,#imagemagick,#python,#selenium

          ——Baptiste Fontaine"s Blog

          英文原文:https://qiniumedia.freelycode.com/vcdn/1/%E4%BC%98%E8%B4%A8%E6%96%87%E7%AB%A0%E9%95%BF%E5%9B%BE2/record-website-change-gif.pdf
          譯者:浣熊君( ????? )

          在人們經(jīng)常會看到很多由視頻片段制作而來的動圖,這種截取視頻片段內(nèi)容來制作成GIF表情包的方法其實并不困難,接下來我將推薦三種方法來快速完成視頻到GIF動圖的轉(zhuǎn)換。簡單幾步就可以輕松搞定。

          一、萬興優(yōu)轉(zhuǎn)桌面端

          1、啟動萬興優(yōu)轉(zhuǎn)然后選擇工具箱板塊,單擊GIF動圖制作功能

          2、在新的彈窗中選擇視頻轉(zhuǎn)GIF動圖功能,然后點擊添加圖標(biāo)將本地的視頻文件導(dǎo)入至產(chǎn)品當(dāng)中。

          3、導(dǎo)入視頻后你可以直接拖動進(jìn)度條兩端來控制轉(zhuǎn)換的視頻片段,另一種方法是直接設(shè)定開始和結(jié)束的時間。然后自定義輸出的大小和幀率,直接點擊創(chuàng)建GIF動圖即可。

          二、萬興優(yōu)轉(zhuǎn)在線端

          1、在瀏覽器中登錄https://www.media.io/zh/gif-maker.html,進(jìn)入視頻轉(zhuǎn)GIF功能頁面,點擊選擇文件按鈕將視頻內(nèi)容導(dǎo)入至工具中。

          2、接下來選擇GIF動圖的開始時間和結(jié)束時間,你還可以控制輸出的大小和幀速率,最后點擊創(chuàng)建GIF按鈕即可完成工作。

          三、美圖秀秀
          如果你只是將多張圖片進(jìn)行合并來做成動圖的效果,那你可以使用美圖秀秀的圖片合并功能,只需要依次放入多張圖片即可,效果就會是按順序來播放圖片。


          當(dāng)然這種圖片拼接的效果有限,更多時候我們會需要選擇將視頻的片段截取為GIF動圖,所以萬興優(yōu)轉(zhuǎn)還是你的最優(yōu)選擇。另外有個好消息分享給大家,萬興優(yōu)轉(zhuǎn)雙十二優(yōu)惠活動已經(jīng)于12月1日上線了,這次活動還新增了月度增值服務(wù)包的限時特賣,有需要的小伙伴可以前往官網(wǎng)了解。


          主站蜘蛛池模板: 日韩免费一区二区三区在线播放| 色一情一乱一伦一区二区三区日本| 亚洲av一综合av一区| 日本一区二区三区在线观看| 91一区二区视频| 国产在线观看一区二区三区| 制服中文字幕一区二区| 日本精品一区二区三区在线观看| 一本一道波多野结衣一区| 中文字幕亚洲一区二区三区| 亚洲爆乳精品无码一区二区| 国产激情精品一区二区三区| 美女毛片一区二区三区四区| 一区二区不卡视频在线观看| 成人中文字幕一区二区三区| 精品国产免费一区二区三区| 丝袜美腿一区二区三区| 中文字幕人妻丝袜乱一区三区| 日本韩国一区二区三区| 91精品一区二区| 日本一区二区不卡在线| 国产婷婷色一区二区三区深爱网| 国产av一区二区三区日韩| 中文字幕人妻AV一区二区| 无码国产精品一区二区免费式影视 | 国产av夜夜欢一区二区三区| 无码精品前田一区二区| 在线观看日本亚洲一区| 亚洲电影一区二区三区| 国产在线精品一区二区高清不卡 | 女人和拘做受全程看视频日本综合a一区二区视频 | 国产成人精品一区二区秒拍| 日本不卡一区二区视频a| 日本视频一区在线观看免费| 欧美日韩精品一区二区在线观看 | 狠狠做深爱婷婷综合一区| 亚洲一区视频在线播放| 国产在线无码一区二区三区视频| 久久人做人爽一区二区三区| 人妻内射一区二区在线视频| 无码一区二区三区免费|