Я перерыл документацию Pillow (v5.3) и нашел что-то, что, кажется, работает.По сути, есть две фазы:
- Сохранить закодированные строки base64 как TIF
- Добавить их вместе и сохранить на диск
Пример с использованием Python 3.7:
from PIL import Image
import io
import base64
base64_images = ["asdfasdg...", "asdfsdafas..."]
image_files = []
for base64_string in base64_images:
buffer = io.BytesIO(base64.b64decode(base64_string))
image_file = Image.open(buffer)
image_files.append(image_file)
combined_image = images_files[0].save(
'output.tiff',
save_all=True,
append_images=image_files[1:]
)
В приведенном выше коде я сначала создаю объекты PIL Image из байтовых буферов, чтобы сделать все это в памяти, но вы, вероятно, можете использовать .save()
и вместо этого создать кучу временных файловесли ввод / вывод не имеет значения.
После того, как у меня есть все объекты PIL Image, я выбираю первое изображение (при условии, что они были в нужном порядке в списке base64_images
) и добавляю остальные изображенияс флагом append_images
.Полученное изображение имеет все кадры в одном выходном файле.
Я предполагаю, что этот шаблон можно расширить для любого формата изображения, который поддерживает аргументы ключевых слов save_all
и append_images
.В документации на подушку должно быть указано, поддерживается ли она.