def convert(cls, files: List[str], cluster_size: int, max_colors: int) -> BytesIO: images: List[Image.Image] = [Image.open(f) for f in files] compressed = [ Compressor.compress_pixels(im, cluster_size) for im in images ] if cluster_size > 1 else images color_mif, color_compressed = Compressor.compress_colors_collective( compressed, max_colors) mifs = [color_mif ] + [Im2Mif.mifify(im, color_mif) for im in color_compressed] names = ["colors.foo"] + [str(basename(f)) for f in files] ret = zip_(names, [StringIO(str(x)) for x in mifs]) [x.close() for x in images + compressed + color_compressed if x] return ret