5

下载带图像的 Zip

我有一个带有圆形蒙版 png 图像的文件夹:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

通常我使用此代码制作 gif:

import imageio
import os

imglist = []
images = []
path = ('\\').join(__file__.split('\\')[:-1]) + '\\' + 'images\\'
for r, _, f in os.walk(path):
    for i in f:
        imglist.append(r + i)

for filename in imglist:
    if filename.endswith('.png'):
        images.append(imageio.imread(filename))

frames_per_second = 24
gifpath = ('\\').join(__file__.split('\\')[:-1]) + '\\' + 'GIF.gif'
imageio.mimsave(gifpath, images, duration = 1/frames_per_second)

这适用于普通图像,但它似乎忽略了蒙版图像。GIF 看起来像这样:

在此处输入图像描述

知道如何制作圆形 gif 吗?

4

1 回答 1

1

您的 png 文件使用透明度,因为 GIF 确实支持透明度,但 imageio 库并非如此。

如果可以将蒙版区域设为白色,则可以在循环内执行此操作。只需更换:

for filename in imglist:
if filename.endswith('.png'):
    images.append(imageio.imread(filename))

和 :

for filename in imglist:
if filename.endswith('.png'):
    tmp_image = imageio.imread(filename)
    mask = (tmp_image[:,:,3] == 0) #where transparency channel is 0
    tmp_image[mask] = [255,255,255,255] #Set those pixels to white (other color if you prefer)
    images.append(tmp_image)

GIF 透明度有点特殊,您将其中一种颜色设置为透明。如果您想在 Python 中执行此操作,此线程应该会有所帮助。

我还建议学习一下如何直接使用 ffmpeg 制作 gif。一开始有点难学,但它是所有视频/gif库在幕后使用的。

最好的,R.

于 2019-10-28T20:29:10.040 回答