前言網絡
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。app
做者:EarlGrey函數
GIF(「圖形交換格式」)是一種位圖圖像格式,於1987年開發。oop
GIF基本上是一系列具備不一樣設置的圖像,例如:學習
GIF 也能夠是靜態圖像。code
Pillow 是 Python 圖形處理庫 PIL 的一個分支,引入了許多更改和加強功能,以使API易於使用或處理更多圖像格式和要求。支持打開、處理和保存多種不一樣格式的圖片文件。orm
第一步,咱們須要先安裝 Pillow:blog
pip install Pillow
咱們生成一張紅球往下墜落的 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
解釋下上面的代碼:
frames
,以及 0點座標 x
和 y
format='GIF'
, append_images=frames[1:]
,保存 GIF 圖片duration=100
)loop=0
,若是設置爲 1,則循環1次,設置爲2則循環2次,以此類推)
最終生成的 GIF 圖大概是下面這樣的: