o
    j~&                     @  s  d dl mZ d dlm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Z
e
r6d dlmZmZ d	d
d
dZd$ddZG dd dejZd%ddZd&ddZd&dd Zeejee ereeje eeje eejd! eejd" d#S d#S )'    )annotations)BytesIO   )Image	ImageFile)_webpTF)IOAnyRGBRGBA)s   VP8 s   VP8Xs   VP8Lprefixbytesreturn
bool | strc                 C  sH   |  d}| dd dk}| dd tv }|r"|r"|r"ts 	 dS dS dS )	Ns   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedTF)
startswith_VP8_MODES_BY_IDENTIFIER	SUPPORTED)r   Zis_riff_file_formatZis_webp_fileZis_valid_vp8_mode r   T/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py_accept   s   
r   c                      s   e Zd ZdZdZdZdZd!ddZd"d	d
Zd#ddZ	d$d%ddZ
d&ddZd#ddZd' fddZd(ddZd)dd Z  ZS )*WebPImageFileZWEBPz
WebP imager   r   Nonec                 C  s   | j d usJ t| j  | _| j \| _| jd< }| _| _	|d? d@ |d? d@ |d@ |d? d@ f| jd< | jdk| _
| j	dkrDd	n| j	| _d
ddd D ]\}}| j| }ra|| j|< qP| jdd d S )Nloopr      r      
backgroundr   RGBXr
   ZICCPZEXIFzXMP )icc_profileexifxmpF)reset)fpr   ZWebPAnimDecoderread_decoderget_info_sizeinfon_framesrawmodeZis_animated_modeitemsZ	get_chunk_reset)selfbgcolorkeyZ
chunk_namevaluer   r   r   _open-   s*   





zWebPImageFile._opendict[int, Any] | Nonec                 C  s   d| j vrd S |   S )Nr!   )r)   ZgetexifZ_get_merged_dictr/   r   r   r   _getexifL   s   
zWebPImageFile._getexifframeintc                 C  s   |  |sd S || _d S N)Z_seek_check_WebPImageFile__logical_framer/   r7   r   r   r   seekQ   s   

zWebPImageFile.seekTr#   boolc                 C  s$   |r| j   d| _d| _d| _d S )Nr   )r&   r#   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r/   r#   r   r   r   r.   X   s
   

zWebPImageFile._resettuple[bytes, int, int]c                 C  sh   | j  }|  jd7  _|d u r|   | d d}t||\}}|| j }|| _||8 }|||fS )Nr   r   z(failed to decode next frame in WebP file)r&   Zget_nextr?   r.   r<   EOFErrorrA   )r/   retmsgdata	timestampdurationr   r   r   	_get_next_   s   



zWebPImageFile._get_nextc                 C  sD   | j |krd S || j k r|   | j |k r |   | j |k sd S d S r9   )r?   r.   rI   r;   r   r   r   _seekt   s   


zWebPImageFile._seekImage.core.PixelAccess | Nonec                   s   | j | jkr;| | j |  \}| jd< | jd< | j| _ | jr(| jr(| j  t|| _t	
dd| j d| jg| _t  S )NrG   rH   raw)r   r   r   )r@   r:   rJ   rI   r)   r$   Z_exclusive_fpcloser   r   Z_Tilesizer+   Ztilesuperload)r/   rF   	__class__r   r   rP   |   s   


zWebPImageFile.loadposc                 C  s   d S r9   r   )r/   rS   r   r   r   	load_seek   s   zWebPImageFile.load_seekc                 C  s   | j S r9   )r:   r5   r   r   r   tell   s   zWebPImageFile.tell)r   r   )r   r4   )r7   r8   r   r   )T)r#   r=   r   r   )r   rB   )r   rK   )rS   r8   r   r   )r   r8   )__name__
__module____qualname__formatformat_descriptionr@   r:   r3   r6   r<   r.   rI   rJ   rP   rT   rU   __classcell__r   r   rQ   r   r   '   s    





r   imImage.Imagec                 C  s"   | j dvr| | jrdnd} | S )N)r   r   r
   r   r
   )modeconvertZhas_transparency_data)r\   r   r   r   _convert_frame   s   
r`   r$   	IO[bytes]filenamestr | bytesr   c           '   
   C  sb  | j  }t|dg }d}| g| D ]
}|t|dd7 }q|dkr+t| || d S d}d|v r6|d }n1d| jv rg| jd }t|trg| 	 }|ra||d |d d  \}	}
}|	|
|df}n|||df}| j d	| jd	d}| j d
d}| j dd}| j dd }| j dd }| j dd}d}| j dd}| j dd}| j dd}| j dd}| j dpd}| j dd}t|t
jr| }| j dd}|rd}|d u r|rdnd}|d u r|rdnd}t|ttfrt|dkstdd |D sd | }t||\}}}}|d!> |d"> B |d#> B |d> B }t| j|||||||}d} d}!|  }"zL| g| D ]?}t|dd}#t|#D ]1}$||$ t|}%||% t|!|||| t|ttfrs|!||  7 }!n|!|7 }!| d7 } qKq?W | |" n| |" w |d t|!|||d ||||}&|&d u rd$}t|||& d S )%Nappend_imagesr   r*   r   )r   r   r   r   r      r   rH   r   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr     r!   r"   	            c                 s  s(    | ]}d |  kodk n  V  qdS )r      Nr   ).0vr   r   r   	<genexpr>   s   & z_save_all.<locals>.<genexpr>z:Background color is not an RGBA tuple clamped to (0-255): r   r   r   1cannot write file as WebP (encoder returned None))encoderinfocopylistgetgetattr_saver)   
isinstancer8   Z
getpaletter   ExiftobytestuplelenallOSErrorr   ZWebPAnimEncoderrN   rU   ranger<   r`   addgetimroundassemblewrite)'r\   r$   rb   rz   rd   totalZimsr   palettergbrH   r   rf   rg   rh   ri   verboserj   rk   rm   ro   r    r!   r"   rE   Zbg_rZbg_gZbg_bZbg_aencZ	frame_idxrG   Zcur_idxZnfridxr7   rF   r   r   r   	_save_all   s   





 


r   c                 C  s   | j dd}| j dd}| j dd}| j dpd}| j d	d
}t|tjr.| }|dr9|dd  }| j dd}| j dd}	| j drOdnd}
t| } t	| 
 |t|t|||	|
||	}|d u rrd}t||| d S )Nrj   Frk   rl   rm   rn   r    rp   r!       s   Exif     r"   ro   rt   exactr   r   ry   )rz   r}   r   r   r   r   r   r`   r   Z
WebPEncoder   floatr   r   )r\   r$   rb   rj   rk   rm   r    r!   r"   ro   r   rF   rE   r   r   r   r     s8   
r   z.webpz
image/webpN)r   r   r   r   )r\   r]   r   r]   )r\   r]   r$   ra   rb   rc   r   r   )
__future__r   ior   rp   r   r   r   r   ImportErrorTYPE_CHECKINGtypingr   r	   r   r   r   r`   r   r   Zregister_openrY   Zregister_saveZregister_save_allZregister_extensionZregister_mimer   r   r   r   <module>   s8    

l

|"