diff --git a/src/reCBZ/archive.py b/src/reCBZ/archive.py index e813c82..10e9c8a 100644 --- a/src/reCBZ/archive.py +++ b/src/reCBZ/archive.py @@ -191,6 +191,8 @@ def fmt(self): return WebpLossless else: return WebpLossy + elif PIL_fmt == "GIF": + return Gif else: raise KeyError(f"'{PIL_fmt}': invalid format") diff --git a/src/reCBZ/formats.py b/src/reCBZ/formats.py index cca6aaf..6e6e105 100644 --- a/src/reCBZ/formats.py +++ b/src/reCBZ/formats.py @@ -57,6 +57,16 @@ class Png(LosslessFmt): def save(cls, img:Image.Image, dest): img.save(dest, format='PNG', optimize=True, compress_level=9) +class Gif(LosslessFmt): + name:str = 'gif' + ext:tuple = '.gif', + desc:str = 'GIF' + mime:str = 'image/gif' -FormatList = (Jpeg, WebpLossy, WebpLossless, Png) + @classmethod + def save(cls, img:Image.Image, dest): + img.save(dest, format='GIF') + + +FormatList = (Jpeg, WebpLossy, WebpLossless, Png, Gif) FormatDict = {cls.name:cls for cls in FormatList}