mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-09 23:04:45 +03:00
Merge dc23e64d6e
into f6d57418cd
This commit is contained in:
commit
8c2dc27346
14
PIL/Image.py
14
PIL/Image.py
|
@ -2291,9 +2291,11 @@ def open(fp, mode="r"):
|
|||
fp = builtins.open(filename, "rb")
|
||||
|
||||
try:
|
||||
fp.seek(0)
|
||||
except (AttributeError, io.UnsupportedOperation):
|
||||
fp = io.BytesIO(fp.read())
|
||||
requires_iobytes_wrapper = not fp.seekable()
|
||||
except AttributeError:
|
||||
# Not a subclass of io.IOBase; probably Python 2.7 file (or urllib object)
|
||||
# Check we have a seek fn on the object
|
||||
requires_iobytes_wrapper = not callable( getattr(fp, "seek", None) )
|
||||
|
||||
prefix = fp.read(16)
|
||||
|
||||
|
@ -2303,6 +2305,9 @@ def open(fp, mode="r"):
|
|||
try:
|
||||
factory, accept = OPEN[i]
|
||||
if not accept or accept(prefix):
|
||||
if requires_iobytes_wrapper:
|
||||
fp = io.BytesIO(prefix + fp.read())
|
||||
requires_iobytes_wrapper = False # Wrapping once is enough
|
||||
fp.seek(0)
|
||||
im = factory(fp, filename)
|
||||
_decompression_bomb_check(im.size)
|
||||
|
@ -2316,6 +2321,9 @@ def open(fp, mode="r"):
|
|||
try:
|
||||
factory, accept = OPEN[i]
|
||||
if not accept or accept(prefix):
|
||||
if requires_iobytes_wrapper:
|
||||
fp = io.BytesIO(prefix + fp.read())
|
||||
requires_iobytes_wrapper = False # Wrapping once is enough
|
||||
fp.seek(0)
|
||||
im = factory(fp, filename)
|
||||
_decompression_bomb_check(im.size)
|
||||
|
|
Loading…
Reference in New Issue
Block a user