mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 01:46:18 +03:00
Raise a warning if NumPy will not raise an error during conversion
This commit is contained in:
parent
b8d96246f7
commit
d02f91c6da
|
@ -35,10 +35,13 @@ def test_toarray():
|
||||||
test_with_dtype(numpy.float64)
|
test_with_dtype(numpy.float64)
|
||||||
test_with_dtype(numpy.uint8)
|
test_with_dtype(numpy.uint8)
|
||||||
|
|
||||||
if parse_version(numpy.__version__) >= parse_version("1.23"):
|
|
||||||
with Image.open("Tests/images/truncated_jpeg.jpg") as im_truncated:
|
with Image.open("Tests/images/truncated_jpeg.jpg") as im_truncated:
|
||||||
|
if parse_version(numpy.__version__) >= parse_version("1.23"):
|
||||||
with pytest.raises(OSError):
|
with pytest.raises(OSError):
|
||||||
numpy.array(im_truncated)
|
numpy.array(im_truncated)
|
||||||
|
else:
|
||||||
|
with pytest.warns(UserWarning):
|
||||||
|
numpy.array(im_truncated)
|
||||||
|
|
||||||
|
|
||||||
def test_fromarray():
|
def test_fromarray():
|
||||||
|
|
|
@ -679,12 +679,24 @@ class Image:
|
||||||
new["shape"] = shape
|
new["shape"] = shape
|
||||||
new["typestr"] = typestr
|
new["typestr"] = typestr
|
||||||
new["version"] = 3
|
new["version"] = 3
|
||||||
|
try:
|
||||||
if self.mode == "1":
|
if self.mode == "1":
|
||||||
# Binary images need to be extended from bits to bytes
|
# Binary images need to be extended from bits to bytes
|
||||||
# See: https://github.com/python-pillow/Pillow/issues/350
|
# See: https://github.com/python-pillow/Pillow/issues/350
|
||||||
new["data"] = self.tobytes("raw", "L")
|
new["data"] = self.tobytes("raw", "L")
|
||||||
else:
|
else:
|
||||||
new["data"] = self.tobytes()
|
new["data"] = self.tobytes()
|
||||||
|
except Exception as e:
|
||||||
|
if not isinstance(e, (MemoryError, RecursionError)):
|
||||||
|
try:
|
||||||
|
import numpy
|
||||||
|
from packaging.version import parse as parse_version
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if parse_version(numpy.__version__) < parse_version("1.23"):
|
||||||
|
warnings.warn(e)
|
||||||
|
raise
|
||||||
return new
|
return new
|
||||||
|
|
||||||
def __getstate__(self):
|
def __getstate__(self):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user