Coverage for src/extratools_image/__init__.py: 57%
14 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-27 20:31 -0700
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-27 20:31 -0700
1from base64 import b64decode, b64encode
2from io import BytesIO
4from PIL.Image import Image
5from PIL.Image import open as open_image
8def image_to_bytes(image: Image, _format: str = "PNG") -> bytes:
9 bio = BytesIO()
10 image.save(bio, format=_format)
11 return bio.getvalue()
14def bytes_to_image(b: bytes, _format: str | None = None) -> Image:
15 return open_image(
16 BytesIO(b),
17 formats=((_format,) if _format else None),
18 )
21def image_to_base64_str(image: Image) -> str:
22 return b64encode(image_to_bytes(image)).decode()
25def base64_str_to_image(s: str) -> Image:
26 return open_image(b64decode(s.encode()))