Source code for bibliopixel.util.image.gif

import io, os, pathlib
from .. import log
from . import file_writer


[docs]class Writer(file_writer.FileWriter): def _write(self, filename, frames, fps, loop=0, palette=256): """ Write a series of frames as a single animated GIF. :param str filename: the name of the GIF file to write :param list frames: a list of filenames, each of which represents a single frame of the animation. Each frame must have exactly the same dimensions, and the code has only been tested with .gif files. :param float fps: The number of frames per second. :param int loop: The number of iterations. Default 0 (meaning loop indefinitely). :param int palette: The number of colors to quantize the image to. Is rounded to the nearest power of two. Default 256. """ from PIL import Image images = [] for f in frames: data = open(f, 'rb').read() images.append(Image.open(io.BytesIO(data))) # GIF duration is only measured to a hundredth of a second duration = round(1 / fps, 2) im = images.pop(0) im.save(filename, save_all=True, append_images=images, duration=duration, loop=loop, palette=palette)
# See also https://github.com/python-pillow/Pillow/issues/3255 from .. import deprecated if deprecated.allowed(): # pragma: no cover from . old_gif import * # noqa: F403