Merge pull request #6456 from radarhere/memory

Moved tile encoding into separate function
This commit is contained in:
Hugo van Kemenade 2022-07-24 10:44:31 +03:00 committed by GitHub
commit f3551ae13e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -499,9 +499,14 @@ def _save(im, fp, tile, bufsize=0):
try:
fh = fp.fileno()
fp.flush()
exc = None
except (AttributeError, io.UnsupportedOperation) as e:
exc = e
_encode_tile(im, fp, tile, bufsize, fh)
except (AttributeError, io.UnsupportedOperation) as exc:
_encode_tile(im, fp, tile, bufsize, None, exc)
if hasattr(fp, "flush"):
fp.flush()
def _encode_tile(im, fp, tile, bufsize, fh, exc=None):
for e, b, o, a in tile:
if o > 0:
fp.seek(o)
@ -526,8 +531,6 @@ def _save(im, fp, tile, bufsize=0):
raise OSError(f"encoder error {s} when writing image file") from exc
finally:
encoder.cleanup()
if hasattr(fp, "flush"):
fp.flush()
def _safe_read(fp, size):