如何从圆形蒙版图像制作 gif?
Posted
技术标签:
【中文标题】如何从圆形蒙版图像制作 gif?【英文标题】:How to make gif from circular masked images? 【发布时间】:2020-02-21 04:03:51 【问题描述】:Download Zip with Images
我有一个带有圆形蒙版 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 吗?
【问题讨论】:
我相信 Python Wand 将能够创建具有透明度的动画 gif。它建立在 Imagemagick 之上。但请注意,GIF 仅支持二进制透明(完全不透明或完全透明)。 【参考方案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。一开始有点难学,但它是所有视频/gif库在幕后使用的。
最好, R.
【讨论】:
以上是关于如何从圆形蒙版图像制作 gif?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 svg 蒙版图像与 Internet Explorer 兼容
如何将使用 Mask Rcnn 在自定义对象检测上创建蒙版图像的 Keras 模型转换为 CoreML 模型以在 iOS 应用程序中使用?