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

1from base64 import b64decode, b64encode 

2from io import BytesIO 

3 

4from PIL.Image import Image 

5from PIL.Image import open as open_image 

6 

7 

8def image_to_bytes(image: Image, _format: str = "PNG") -> bytes: 

9 bio = BytesIO() 

10 image.save(bio, format=_format) 

11 return bio.getvalue() 

12 

13 

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 ) 

19 

20 

21def image_to_base64_str(image: Image) -> str: 

22 return b64encode(image_to_bytes(image)).decode() 

23 

24 

25def base64_str_to_image(s: str) -> Image: 

26 return open_image(b64decode(s.encode()))