Typing: Image.putalpha

This commit is contained in:
Eric Soroos 2018-01-05 10:15:27 +00:00
parent 42086c3a35
commit 02e10805e0

View File

@ -1589,15 +1589,15 @@ class Image(object):
return self._new(self.im.point(lut, mode)) return self._new(self.im.point(lut, mode))
def putalpha(self, alpha): def putalpha(self, alpha):
# type: (Union[Image, Color]) -> None ## FIXME TYPING: Check this # type: (Union[Image, int]) -> None
""" """
Adds or replaces the alpha layer in this image. If the image Adds or replaces the alpha layer in this image. If the image
does not have an alpha layer, it's converted to "LA" or "RGBA". does not have an alpha layer, it's converted to "LA" or "RGBA".
The new layer must be either "L" or "1". The new layer must be either "L" or "1".
:param alpha: The new alpha layer. This can either be an "L" or "1" :param alpha: The new alpha layer. This can either be an "L" or "1"
image having the same size as this image, or an integer or image having the same size as this image, or an integer
other color value. representing the alpha value.
""" """
self._ensure_mutable() self._ensure_mutable()
@ -1624,24 +1624,28 @@ class Image(object):
else: else:
band = 3 band = 3
alpha_img = None # type: Image
if isImageType(alpha): if isImageType(alpha):
# alpha layer # alpha layer
if alpha.mode not in ("1", "L"): alpha_img = alpha # type: ignore
if alpha_img.mode not in ("1", "L"):
raise ValueError("illegal image mode") raise ValueError("illegal image mode")
alpha.load() alpha_img.load()
if alpha.mode == "1": if alpha_img.mode == "1":
alpha = alpha.convert("L") alpha_img = alpha_img.convert("L")
else: else:
# constant alpha # constant alpha
try: try:
self.im.fillband(band, alpha) alpha_int = None # type: int
alpha_int = alpha # type: ignore
self.im.fillband(band, alpha_int)
except (AttributeError, ValueError): except (AttributeError, ValueError):
# do things the hard way # do things the hard way
alpha = new("L", self.size, alpha) alpha_img = new("L", self.size, alpha_int)
else: else:
return return
self.im.putband(alpha.im, band) self.im.putband(alpha_img.im, band)
def putdata(self, data, scale=1.0, offset=0.0): def putdata(self, data, scale=1.0, offset=0.0):
# type: (Sequence[Union[bytes, int, float]], float, float) -> None # type: (Sequence[Union[bytes, int, float]], float, float) -> None