Spaces:
Build error
Build error
| import base64 | |
| import io | |
| import numpy as np | |
| from PIL import Image | |
| def image_to_png_base64_url( | |
| image: np.ndarray | Image.Image, add_data_prefix: bool = False | |
| ) -> str: | |
| """Convert a numpy array to a base64 encoded png image url.""" | |
| if isinstance(image, np.ndarray): | |
| image = Image.fromarray(image) | |
| if image.mode in ('RGBA', 'LA'): | |
| image = image.convert('RGB') | |
| buffered = io.BytesIO() | |
| image.save(buffered, format='PNG') | |
| image_base64 = base64.b64encode(buffered.getvalue()).decode() | |
| return ( | |
| f'data:image/png;base64,{image_base64}' | |
| if add_data_prefix | |
| else f'{image_base64}' | |
| ) | |
| def png_base64_url_to_image(png_base64_url: str) -> Image.Image: | |
| """Convert a base64 encoded png image url to a PIL Image.""" | |
| splited = png_base64_url.split(',') | |
| if len(splited) == 2: | |
| base64_data = splited[1] | |
| else: | |
| base64_data = png_base64_url | |
| return Image.open(io.BytesIO(base64.b64decode(base64_data))) | |