日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用pil读取gif图有些位置为黑色_使用 Pillow 快速创建 GIF 动图

發布時間:2025/1/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用pil读取gif图有些位置为黑色_使用 Pillow 快速创建 GIF 动图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

后臺回復【入門資料】

送你十本Python電子書

之前有篇推文分享了如何在 Matplotlib 中生成 GIF 可視化圖表,有一定的限制。本文將介紹如何用 Pillow 創建 GIF,可以將任意多張圖片組合在一起,成為一張可播放的 GIF 圖。

這種方式的適用場景更多,而且 PyPI 上也沒有專門的庫可以生成 GIF,所以推薦大家收藏本文的代碼。

什么是 GIF 圖?

GIF(“圖形交換格式”)是一種位圖圖像格式,于1987年開發。

GIF基本上是一系列具有不同設置的圖像,例如:

  • 循環播放

  • 每幀的持續時間(圖片)

  • 其他…

GIF 也可以是靜態圖像。

Pillow

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

利用 Python 生成 GIF

安裝 Pillow

第一步,我們需要先安裝 Pillow:

pip install Pillow

生成 GIF

我們生成一張紅球往下墜落的 GIF 動圖,作為文章示例。

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

fromPILimportImage,ImageDraw

defcreate_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')

returnimg

上述代碼中,我們使用 Image.new創建了一張 RGB 圖片,并設置背景為白色,指定了圖片大小。

接著,通過 ImageDraw在圖片中的指定參數位置,畫了一個紅色的圓圈。

所以,我們要做的就是創建多張圖片,不斷讓紅球往下墜。

# Create the frames

frames =

x, y = 0,0

foriinrange(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點坐標x和y

  • 用一個運行十次的 for 循環,每次創建一張 400x400 大小的圖片,圖片中紅球的位置不同

  • 更改紅球的坐標,讓紅球沿著對角線往下墜

  • 設置參數 format='GIF',append_images=frames[1:],保存 GIF 圖片

      • 每幀圖片播放100毫秒( duration=100)

      • GIF圖片一直重復循環( loop=0,如果設置為 1,則循環1次,設置為2則循環2次,以此類推)

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

    參考鏈接:https://blog.zhaytam.com/2018/08/21/creating-gifs-using-python-pillow/

    題圖:pexels,CC0 授權。

    總結

    以上是生活随笔為你收集整理的使用pil读取gif图有些位置为黑色_使用 Pillow 快速创建 GIF 动图的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。