diff --git a/PIL/Image.py b/PIL/Image.py index 09ea77f13..53e774639 100644 --- a/PIL/Image.py +++ b/PIL/Image.py @@ -2239,21 +2239,20 @@ def open(fp, mode="r"): opened and identified. """ - should_close = False if mode != "r": raise ValueError("bad mode %r" % mode) if isPath(fp): filename = fp - fp = builtins.open(fp, "rb") - should_close = True + with builtins.open(fp, "rb") as fp: + return _open(fp, filename, mode) else: filename = "" + return _open(fp, filename, mode) - def finalize(): - if should_close: - fp.close() + +def _open(fp, filename, mode): prefix = fp.read(16) preinit() @@ -2265,7 +2264,6 @@ def open(fp, mode="r"): fp.seek(0) im = factory(fp, filename) _decompression_bomb_check(im.size) - finalize() return im except (SyntaxError, IndexError, TypeError): # import traceback @@ -2281,14 +2279,12 @@ def open(fp, mode="r"): fp.seek(0) im = factory(fp, filename) _decompression_bomb_check(im.size) - finalize() return im except (SyntaxError, IndexError, TypeError): # import traceback # traceback.print_exc() pass - finalize() raise IOError("cannot identify image file %r" % (filename if filename else fp))