U
    Y»{j
  ã                   @   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	k
rP   dZY nX 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}nH| jdkrJ| jd dkrJd	}n*| jdkrl| jd d
krld}d}nt dƒ‚|dkrˆtr„dnd}|dkr |dkr t dƒ‚|dk�rD| j}| j}|dkrÜ|  |d |d |d  f¡} t|d |d |dk||d�}t| |d�}	d}
tƒ �,}| ||	j	¡ |
t
 | ¡ ¡ d¡ }W 5 Q R X nxt�sRtdƒ‚t | ¡}|dk�sp|dk�rzd}
d}nd}
d}tƒ �.}|j|||d� |
t
 | ¡ ¡ d¡ }W 5 Q R X |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   ZRGBATzInvalid image shapeÚautor   Zpypngr	   z6jpg binary strings are only available with PIL backendr   )Z	greyscaleÚalphaÚcompression)Úmodezdata:image/png;base64,zutf-8zapillow needs to be installed to use `backend='pil'. Pleaseinstall pillow or use `backend='pypng'.ZjpgZjpegzdata:image/jpeg;base64,)ÚformatZcompress_level)Ú
ValueErrorÚndimÚshapeÚpil_importedZreshaper   r   r   ÚwriteÚrowsÚbase64Ú	b64encodeÚgetvalueÚdecodeÚImportErrorr   Z	fromarrayÚsave)ZimgÚbackendr   Úextr   r   r   ÚshÚwZimg_pngÚprefixÚstreamZbase64_stringZpil_img© r'   úW/var/www/html/bwave/python/venv/lib/python3.8/site-packages/_plotly_utils/data_utils.pyÚimage_array_to_data_uri   s\    

    ÿ$ÿ
"r)   )r   r   r	   )Úior   r   r	   r   r   ZPILr   r   r   r)   r'   r'   r'   r(   Ú<module>   s   
