mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-24 15:50:33 +03:00
Only open one BytesIO instance at a time
This commit is contained in:
parent
d07a085757
commit
f366330a74
|
@ -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}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user