如果我有多个base64字符串是图像(一个字符串=一个图像)。有没有一种方法可以将它们组合并解码为单个图像文件?即从多个base64字符串中合并并输出一个图像文件。
我不确定如何使用Pillow来解决这个问题(或者我是否需要它)。
进一步澄清:
答案 0 :(得分:0)
我仔细阅读了Pillow文档(v5.3),发现似乎有用。基本上有两个阶段:
使用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对象,以便在内存中完成整个操作,但是如果I / O不是,则可以使用.save()
并创建一堆临时文件来代替不用担心。
一旦有了所有的PIL图像对象,就选择第一个图像(假设它们在base64_images
列表中以所需的顺序排列)并在其余图像上附加append_images
标志。生成的图像将所有帧包含在一个输出文件中。
我假设此模式可扩展为支持save_all
和append_images
关键字参数的任何图像格式。枕头文档应该让您知道它是否受支持。