Avoid potentially loading an image twice

This commit is contained in:
Andrew Murray 2017-06-22 20:24:21 +10:00
parent e5513804a3
commit 23a51a35e9

View File

@ -875,7 +875,7 @@ class Image(object):
mode = "RGB" mode = "RGB"
else: else:
return self.copy() return self.copy()
else:
self.load() self.load()
if matrix: if matrix:
@ -1062,10 +1062,10 @@ class Image(object):
:returns: An :py:class:`~PIL.Image.Image` object. :returns: An :py:class:`~PIL.Image.Image` object.
""" """
self.load()
if box is None: if box is None:
return self.copy() return self.copy()
self.load()
return self._new(self._crop(self.im, box)) return self._new(self._crop(self.im, box))
def _crop(self, im, box): def _crop(self, im, box):
@ -1390,9 +1390,10 @@ class Image(object):
im = im.convert(self.mode) im = im.convert(self.mode)
im = im.im im = im.im
self.load()
if self.readonly: if self.readonly:
self._copy() self._copy()
else:
self.load()
if mask: if mask:
mask.load() mask.load()
@ -1498,9 +1499,10 @@ class Image(object):
other color value. other color value.
""" """
self.load()
if self.readonly: if self.readonly:
self._copy() self._copy()
else:
self.load()
if self.mode not in ("LA", "RGBA"): if self.mode not in ("LA", "RGBA"):
# attempt to promote self to a matching alpha mode # attempt to promote self to a matching alpha mode
@ -1556,9 +1558,10 @@ class Image(object):
:param offset: An optional offset value. The default is 0.0. :param offset: An optional offset value. The default is 0.0.
""" """
self.load()
if self.readonly: if self.readonly:
self._copy() self._copy()
else:
self.load()
self.im.putdata(data, scale, offset) self.im.putdata(data, scale, offset)
@ -1612,7 +1615,6 @@ class Image(object):
:param value: The pixel value. :param value: The pixel value.
""" """
self.load()
if self.readonly: if self.readonly:
self._copy() self._copy()
self.load() self.load()