后臺回復(fù)【入門資料】 送你十本Python電子書

之前有篇推文分享了如何在 Matplotlib 中生成 GIF 可視化圖表,有一定的限制。本文將介紹如何用 Pillow 創(chuàng)建 GIF,可以將任意多張圖片組合在一起,成為一張可播放的 GIF 圖。 這種方式的適用場景更多,而且 PyPI 上也沒有專門的庫可以生成 GIF,所以推薦大家收藏本文的代碼。 什么是 GIF 圖?GIF(“圖形交換格式”)是一種位圖圖像格式,于1987年開發(fā)。 GIF基本上是一系列具有不同設(shè)置的圖像,例如: 循環(huán)播放 每幀的持續(xù)時間(圖片) 其他…
GIF 也可以是靜態(tài)圖像。 
PillowPillow 是 Python 圖形處理庫 PIL 的一個分支,引入了許多更改和增強功能,以使API易于使用或處理更多圖像格式和要求。支持打開、處理和保存多種不同格式的圖片文件。 利用 Python 生成 GIF安裝 Pillow第一步,我們需要先安裝 Pillow: pip install Pillow
生成 GIF我們生成一張紅球往下墜落的 GIF 動圖,作為文章示例。 首先,編寫一個函數(shù),利用 Pillow 在一張圖片上畫一個紅球。 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 創(chuàng)建了一張 RGB 圖片,并設(shè)置背景為白色,指定了圖片大小。 接著,通過 ImageDraw 在圖片中的指定參數(shù)位置,畫了一個紅色的圓圈。 所以,我們要做的就是創(chuàng)建多張圖片,不斷讓紅球往下墜。 # 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=0)
解釋下上面的代碼: 初始化一個空列表 frames ,以及 0點坐標(biāo) x 和 y 用一個運行十次的 for 循環(huán),每次創(chuàng)建一張 400x400 大小的圖片,圖片中紅球的位置不同 更改紅球的坐標(biāo),讓紅球沿著對角線往下墜 設(shè)置參數(shù) format='GIF' , append_images=frames[1:] ,保存 GIF 圖片
最終生成的 GIF 圖大概是下面這樣的: 
參考鏈接:https://blog./2018/08/21/creating-gifs-using-python-pillow/
|