mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-06 05:20:09 +03:00
Raise a TypeError when Image() is called
This commit is contained in:
parent
4ecf1df4ea
commit
ae96f81450
|
@ -94,6 +94,10 @@ class TestImage:
|
||||||
# with pytest.raises(MemoryError):
|
# with pytest.raises(MemoryError):
|
||||||
# Image.new("L", (1000000, 1000000))
|
# Image.new("L", (1000000, 1000000))
|
||||||
|
|
||||||
|
def test_direct(self):
|
||||||
|
with pytest.raises(TypeError):
|
||||||
|
Image.Image()
|
||||||
|
|
||||||
def test_repr_pretty(self):
|
def test_repr_pretty(self):
|
||||||
class Pretty:
|
class Pretty:
|
||||||
def text(self, text):
|
def text(self, text):
|
||||||
|
|
|
@ -481,16 +481,11 @@ class Image:
|
||||||
_close_exclusive_fp_after_loading = True
|
_close_exclusive_fp_after_loading = True
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# FIXME: take "new" parameters / other image?
|
msg = (
|
||||||
# FIXME: turn mode and size into delegating properties?
|
"Images should not be instantiated directly. "
|
||||||
self.im = None
|
"Use the module new() function instead."
|
||||||
self._mode = ""
|
)
|
||||||
self._size = (0, 0)
|
raise TypeError(msg)
|
||||||
self.palette = None
|
|
||||||
self.info = {}
|
|
||||||
self.readonly = 0
|
|
||||||
self.pyaccess = None
|
|
||||||
self._exif = None
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def width(self):
|
def width(self):
|
||||||
|
@ -508,8 +503,24 @@ class Image:
|
||||||
def mode(self):
|
def mode(self):
|
||||||
return self._mode
|
return self._mode
|
||||||
|
|
||||||
|
def _prepare(self):
|
||||||
|
self.im = None
|
||||||
|
self._mode = ""
|
||||||
|
self._size = (0, 0)
|
||||||
|
self.palette = None
|
||||||
|
self.info = {}
|
||||||
|
self.readonly = 0
|
||||||
|
self.pyaccess = None
|
||||||
|
self._exif = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _init(cls):
|
||||||
|
self = cls.__new__(cls)
|
||||||
|
self._prepare()
|
||||||
|
return self
|
||||||
|
|
||||||
def _new(self, im):
|
def _new(self, im):
|
||||||
new = Image()
|
new = Image._init()
|
||||||
new.im = im
|
new.im = im
|
||||||
new._mode = im.mode
|
new._mode = im.mode
|
||||||
new._size = im.size
|
new._size = im.size
|
||||||
|
@ -695,7 +706,7 @@ class Image:
|
||||||
return [self.info, self.mode, self.size, self.getpalette(), im_data]
|
return [self.info, self.mode, self.size, self.getpalette(), im_data]
|
||||||
|
|
||||||
def __setstate__(self, state):
|
def __setstate__(self, state):
|
||||||
Image.__init__(self)
|
self._prepare()
|
||||||
info, mode, size, palette, data = state
|
info, mode, size, palette, data = state
|
||||||
self.info = info
|
self.info = info
|
||||||
self._mode = mode
|
self._mode = mode
|
||||||
|
@ -980,7 +991,7 @@ class Image:
|
||||||
else:
|
else:
|
||||||
# get the new transparency color.
|
# get the new transparency color.
|
||||||
# use existing conversions
|
# use existing conversions
|
||||||
trns_im = Image()._new(core.new(self.mode, (1, 1)))
|
trns_im = Image._init()._new(core.new(self.mode, (1, 1)))
|
||||||
if self.mode == "P":
|
if self.mode == "P":
|
||||||
trns_im.putpalette(self.palette)
|
trns_im.putpalette(self.palette)
|
||||||
if isinstance(t, tuple):
|
if isinstance(t, tuple):
|
||||||
|
@ -2874,7 +2885,7 @@ class ImageTransformHandler:
|
||||||
def _wedge():
|
def _wedge():
|
||||||
"""Create greyscale wedge (for debugging only)"""
|
"""Create greyscale wedge (for debugging only)"""
|
||||||
|
|
||||||
return Image()._new(core.wedge("L"))
|
return Image._init()._new(core.wedge("L"))
|
||||||
|
|
||||||
|
|
||||||
def _check_size(size):
|
def _check_size(size):
|
||||||
|
@ -2918,7 +2929,7 @@ def new(mode, size, color=0):
|
||||||
|
|
||||||
if color is None:
|
if color is None:
|
||||||
# don't initialize
|
# don't initialize
|
||||||
return Image()._new(core.new(mode, size))
|
return Image._init()._new(core.new(mode, size))
|
||||||
|
|
||||||
if isinstance(color, str):
|
if isinstance(color, str):
|
||||||
# css3-style specifier
|
# css3-style specifier
|
||||||
|
@ -2927,7 +2938,7 @@ def new(mode, size, color=0):
|
||||||
|
|
||||||
color = ImageColor.getcolor(color, mode)
|
color = ImageColor.getcolor(color, mode)
|
||||||
|
|
||||||
im = Image()
|
im = Image._init()
|
||||||
if mode == "P" and isinstance(color, (list, tuple)) and len(color) in [3, 4]:
|
if mode == "P" and isinstance(color, (list, tuple)) and len(color) in [3, 4]:
|
||||||
# RGB or RGBA value for a P image
|
# RGB or RGBA value for a P image
|
||||||
from . import ImagePalette
|
from . import ImagePalette
|
||||||
|
@ -3547,7 +3558,7 @@ def effect_mandelbrot(size, extent, quality):
|
||||||
(x0, y0, x1, y1).
|
(x0, y0, x1, y1).
|
||||||
:param quality: Quality.
|
:param quality: Quality.
|
||||||
"""
|
"""
|
||||||
return Image()._new(core.effect_mandelbrot(size, extent, quality))
|
return Image._init()._new(core.effect_mandelbrot(size, extent, quality))
|
||||||
|
|
||||||
|
|
||||||
def effect_noise(size, sigma):
|
def effect_noise(size, sigma):
|
||||||
|
@ -3558,7 +3569,7 @@ def effect_noise(size, sigma):
|
||||||
(width, height).
|
(width, height).
|
||||||
:param sigma: Standard deviation of noise.
|
:param sigma: Standard deviation of noise.
|
||||||
"""
|
"""
|
||||||
return Image()._new(core.effect_noise(size, sigma))
|
return Image._init()._new(core.effect_noise(size, sigma))
|
||||||
|
|
||||||
|
|
||||||
def linear_gradient(mode):
|
def linear_gradient(mode):
|
||||||
|
@ -3567,7 +3578,7 @@ def linear_gradient(mode):
|
||||||
|
|
||||||
:param mode: Input mode.
|
:param mode: Input mode.
|
||||||
"""
|
"""
|
||||||
return Image()._new(core.linear_gradient(mode))
|
return Image._init()._new(core.linear_gradient(mode))
|
||||||
|
|
||||||
|
|
||||||
def radial_gradient(mode):
|
def radial_gradient(mode):
|
||||||
|
@ -3576,7 +3587,7 @@ def radial_gradient(mode):
|
||||||
|
|
||||||
:param mode: Input mode.
|
:param mode: Input mode.
|
||||||
"""
|
"""
|
||||||
return Image()._new(core.radial_gradient(mode))
|
return Image._init()._new(core.radial_gradient(mode))
|
||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
|
|
|
@ -86,7 +86,7 @@ class ImageFile(Image.Image):
|
||||||
"""Base class for image file format handlers."""
|
"""Base class for image file format handlers."""
|
||||||
|
|
||||||
def __init__(self, fp=None, filename=None):
|
def __init__(self, fp=None, filename=None):
|
||||||
super().__init__()
|
super()._prepare()
|
||||||
|
|
||||||
self._min_frame = 0
|
self._min_frame = 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user