From bf4efb42d811b651a8d151dbbbc88536e1fb8ebf Mon Sep 17 00:00:00 2001 From: relikd Date: Sun, 12 Mar 2023 17:33:32 +0100 Subject: [PATCH] feat: allow ArgbImage to load from Pillow image --- icnsutil/ArgbImage.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/icnsutil/ArgbImage.py b/icnsutil/ArgbImage.py index bb94c4e..ebcec18 100644 --- a/icnsutil/ArgbImage.py +++ b/icnsutil/ArgbImage.py @@ -38,6 +38,7 @@ class ArgbImage: *, data: Optional[bytes] = None, file: Optional[str] = None, + image: Optional['Image.Image'] = None, mask: Union[bytes, str, None] = None, ) -> None: ''' @@ -50,6 +51,8 @@ class ArgbImage: self.load_file(file) elif data: self.load_data(data) + elif image: + self._load_pillow_image(image) else: raise AttributeError('Neither data nor file provided.') if mask: @@ -128,7 +131,10 @@ class ArgbImage: def _load_png(self, fname: str) -> None: if not PIL_ENABLED: raise ImportError('Install Pillow to support PNG conversion.') - img = Image.open(fname, mode='r').convert('RGBA') + self._load_pillow_image(Image.open(fname, mode='r')) + + def _load_pillow_image(self, image: 'Image.Image') -> None: + img = image.convert('RGBA') self.size = img.size self.channels = 4 self.a = []