Art*_*nov 5 python opencv gif python-imaging-library python-imageio
我有一个带有圆形蒙版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)
Run Code Online (Sandbox Code Playgroud)
这对于普通图像效果很好,但似乎忽略了蒙版图像。gif看起来像这样:
知道如何制作圆形gif吗?
小智 1
您的 png 文件使用透明度,因为 GIF 确实支持透明度,但 imageio 库不是这种情况。
如果可以将遮罩区域设置为白色,则可以在循环内执行此操作。只需替换:
for filename in imglist:
if filename.endswith('.png'):
images.append(imageio.imread(filename))
Run Code Online (Sandbox Code Playgroud)
和 :
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)
Run Code Online (Sandbox Code Playgroud)
GIF 透明度有点特殊,您将要渲染的颜色之一设置为透明。如果你想在 Python 中做到这一点,这个线程应该会有所帮助。
我还建议学习一些如何直接使用 ffmpeg 制作 gif。一开始学习起来有点困难,但它是所有视频/gif 库在幕后使用的。
贝斯特,R.
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |