Python如何快速建立 GIF 動圖?圖片神器Pillow幫你解決

前言網絡

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。app

做者:EarlGrey函數

 

 

什麼是 GIF 圖?

GIF(「圖形交換格式」)是一種位圖圖像格式,於1987年開發。oop

GIF基本上是一系列具備不一樣設置的圖像,例如:學習

  • 循環播放
  • 每幀的持續時間(圖片)
  • 其餘…

GIF 也能夠是靜態圖像。code

 

 

Pillow

Pillow 是 Python 圖形處理庫 PIL 的一個分支,引入了許多更改和加強功能,以使API易於使用或處理更多圖像格式和要求。支持打開、處理和保存多種不一樣格式的圖片文件。orm

利用 Python 生成 GIF

安裝 Pillow

第一步,咱們須要先安裝 Pillow:blog

pip install Pillow

生成 GIF

咱們生成一張紅球往下墜落的 GIF 動圖,做爲文章示例。圖片

首先,編寫一個函數,利用 Pillow 在一張圖片上畫一個紅球。ip

from PIL import Image, ImageDraw

def create_image_with_ball(width, height, ball_x, ball_y, ball_size):


    img = Image.new('RGB', (width, height), (255, 255, 255))


    draw = ImageDraw.Draw(img)


    # draw.ellipse takes a 4-tuple (x0, y0, x1, y1) where (x0, y0) is the top-left bound of the box


    # and (x1, y1) is the lower-right bound of the box.


    draw.ellipse((ball_x, ball_y, ball_x + ball_size, ball_y + ball_size), fill='red')


    return img

 

上述代碼中,咱們使用 Image.new 建立了一張 RGB 圖片,並設置背景爲白色,指定了圖片大小。

接着,經過 ImageDraw 在圖片中的指定參數位置,畫了一個紅色的圓圈。因此,咱們要作的就是建立多張圖片,不斷讓紅球往下墜。

# Create the frames


frames = []


x, y = 0, 0


for i in range(10):


    new_frame = create_image_with_ball(400, 400, x, y, 40)


    frames.append(new_frame)


    x += 40


    y += 40






# Save into a GIF file that loops forever


frames[0].save('moving_ball.gif', format='GIF', append_images=frames[1:], save_all=True, duration=100, loop

​​​​​​​解釋下上面的代碼:

  1. 初始化一個空列表 frames ,以及 0點座標 x 和 y
  2. 用一個運行十次的 for 循環,每次建立一張 400x400 大小的圖片,圖片中紅球的位置不一樣
  3. 更改紅球的座標,讓紅球沿着對角線往下墜
  4. 設置參數 format='GIF', append_images=frames[1:],保存 GIF 圖片
  • 每幀圖片播放100毫秒( duration=100
  • GIF圖片一直重複循環( loop=0,若是設置爲 1,則循環1次,設置爲2則循環2次,以此類推)

 

最終生成的 GIF 圖大概是下面這樣的:

相關文章
相關標籤/搜索