Only open one BytesIO instance at a time

This commit is contained in:
Andrew Murray 2021-06-29 20:49:19 +10:00
parent d07a085757
commit f366330a74

View File

@ -319,15 +319,19 @@ def _save(im, fp, filename):
# Size # Size
sizes = [128, 256, 512, 32, 64, 256, 512, 1024] sizes = [128, 256, 512, 32, 64, 256, 512, 1024]
size_str = [b"ic07", b"ic08", b"ic09", b"ic11", b"ic12", b"ic13", b"ic14", b"ic10"] size_str = [b"ic07", b"ic08", b"ic09", b"ic11", b"ic12", b"ic13", b"ic14", b"ic10"]
entries = []
provided_images = {im.width: im for im in im.encoderinfo.get("append_images", [])} provided_images = {im.width: im for im in im.encoderinfo.get("append_images", [])}
temp_sizes = {s: io.BytesIO() for s in set(sizes)} size_streams = {}
for s, temp in temp_sizes.items(): for s in set(sizes):
nb = provided_images[s] if s in provided_images else im.resize((s, s)) image = provided_images[s] if s in provided_images else im.resize((s, s))
nb.save(temp, "png")
for index, s in enumerate(sizes): temp = io.BytesIO()
temp = temp_sizes[s] image.save(temp, "png")
stream = temp.getvalue() size_streams[s] = temp.getvalue()
entries = []
for index, size in enumerate(sizes):
stream = size_streams[size]
entries.append( entries.append(
{"type": _to_int(size_str[index]), "size": len(stream), "stream": stream} {"type": _to_int(size_str[index]), "size": len(stream), "stream": stream}
) )