o
    Mh
                     @   s^   d dl mZ d dlZddlmZmZ z
d dlmZ dZW n e	y'   dZY nw dddZ
dS )    )BytesION   )Writer
from_array)ImageTFpil   pngc                 C   s  |dk s|dkrt dd}| jdkrd}n$| jdkr%| jd dkr%d	}n| jdkr6| jd d
kr6d}d}nt d|dkrDtrBdnd}|dkrP|dkrPt d|dkr| j}| j}|dkrm| |d |d |d  f} t|d |d |dk||d}t| |d}	d}
t }|||	j	 |
t
| d }W d   |S 1 sw   Y  |S tstdt| }|dks|dkrd}
d}nd}
d}t }|j|||d |
t
| d }W d   |S 1 sw   Y  |S )a  Converts a numpy array of uint8 into a base64 png or jpg string.

    Parameters
    ----------
    img: ndarray of uint8
        array image
    backend: str
        'auto', 'pil' or 'pypng'. If 'auto', Pillow is used if installed,
        otherwise pypng.
    compression: int, between 0 and 9
        compression level to be passed to the backend
    ext: str, 'png' or 'jpg'
        compression format used to generate b64 string
    r   	   z*compression level must be between 0 and 9.F   L   RGBr   RGBATzInvalid image shapeautor   pypngr	   z6jpg binary strings are only available with PIL backendr   )	greyscalealphacompression)modezdata:image/png;base64,zutf-8Nzapillow needs to be installed to use `backend='pil'. Pleaseinstall pillow or use `backend='pypng'.jpgjpegzdata:image/jpeg;base64,)formatcompress_level)
ValueErrorndimshapepil_importedreshaper   r   r   writerowsbase64	b64encodegetvaluedecodeImportErrorr   	fromarraysave)imgbackendr   extr   r   r   shwimg_pngprefixstreambase64_stringpil_img r3   Y/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/_plotly_utils/data_utils.pyimage_array_to_data_uri   sb   



r5   )r   r   r	   )ior   r"   r	   r   r   PILr   r   r&   r5   r3   r3   r3   r4   <module>   s    