python如何把圖片做成動(dòng)圖

小億
150
2023-12-01 12:49:06

要把圖片制作成動(dòng)圖,可以使用Python的PIL庫(kù)(Python Imaging Library)或者OpenCV庫(kù)。下面是使用PIL庫(kù)的示例代碼:

from PIL import Image

# 打開(kāi)圖片
image1 = Image.open('image1.jpg')
image2 = Image.open('image2.jpg')
image3 = Image.open('image3.jpg')

# 創(chuàng)建一個(gè)新的文件夾保存動(dòng)畫(huà)幀
image1.save('animated.gif',
            save_all=True,
            append_images=[image2, image3],
            optimize=False,
            duration=500,
            loop=0)

在這個(gè)示例中,首先通過(guò)Image.open()方法打開(kāi)了三張圖片(image1.jpg、image2.jpg和image3.jpg)。然后,使用save()方法將這些圖片保存為一個(gè)動(dòng)畫(huà)幀。save_all=True表示保存所有的幀,append_images參數(shù)指定了要添加到動(dòng)畫(huà)中的其他圖片幀,optimize=False表示不進(jìn)行優(yōu)化,duration參數(shù)表示每個(gè)幀的顯示時(shí)間(單位為毫秒),loop參數(shù)表示循環(huán)次數(shù),0表示無(wú)限循環(huán)。

如果要對(duì)動(dòng)圖進(jìn)行進(jìn)一步編輯,可以使用imageio庫(kù)和numpy庫(kù)進(jìn)行幀的讀取和處理。以下是一個(gè)示例代碼:

import imageio
import numpy as np

# 讀取動(dòng)畫(huà)幀
image1 = imageio.imread('image1.jpg')
image2 = imageio.imread('image2.jpg')
image3 = imageio.imread('image3.jpg')

# 創(chuàng)建一個(gè)空白動(dòng)畫(huà)
animated_image = np.zeros_like(image1)

# 合并幀
animated_image[0:100, 0:100, :] = image1
animated_image[100:200, 100:200, :] = image2
animated_image[200:300, 200:300, :] = image3

# 保存動(dòng)畫(huà)
imageio.imwrite('animated.gif', animated_image, duration=0.5)

在這個(gè)示例中,首先使用imageio庫(kù)的imread()函數(shù)讀取圖片幀。然后,創(chuàng)建一個(gè)空白的動(dòng)畫(huà)幀,使用numpy庫(kù)的zeros_like()函數(shù)創(chuàng)建與圖片尺寸相同的空白幀。接著,使用切片操作將讀取的圖片幀放置到相應(yīng)位置。最后,使用imageio庫(kù)的imwrite()函數(shù)保存動(dòng)畫(huà)幀為動(dòng)圖文件。duration參數(shù)表示每個(gè)幀的顯示時(shí)間(單位為秒)。

0