如何从圆形蒙版图像制作gif?

时间:2019-10-24 19:07:21

标签: python opencv python-imaging-library gif python-imageio

Download Zip with Images

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

enter image description here enter image description here enter image description here

通常,我使用以下代码制作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看起来像这样:

enter image description here

有人知道如何制作圆形gif吗?

1 个答案:

答案 0 :(得分: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,this thread应该会有所帮助。

我还建议您学习一些如何直接使用ffmpeg制作gif的方法。一开始很难学习,但这是所有video / gif库在后台使用的功能。

最好, R。