
    gd'                       d dl mZ d dlmZ d dlmZmZ ddlmZm	Z	 	 ddlm
Z
 dZn# e$ r dZY nw xY wd	d
d
dZd dZ G d de	j	                  Zd!dZd"dZd"dZ ej        ej        ee           erZ ej        ej        e            ej        ej        e            ej        ej        d            ej        ej        d           dS dS )#    )annotations)BytesIO)IOAny   )Image	ImageFile)_webpTFRGBRGBA)s   VP8 s   VP8Xs   VP8Lprefixbytesreturn
bool | strc                    | d d         dk    }| dd         dk    }| dd         t           v }|r|r|rt          s	 dS dS d	S )
N   s   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedTF)_VP8_MODES_BY_IDENTIFIER	SUPPORTED)r   is_riff_file_formatis_webp_fileis_valid_vp8_modes       O/var/www/html/ai-engine/env/lib/python3.11/site-packages/PIL/WebPImagePlugin.py_acceptr      ss     !*/!B$<7*Lr"u)AA | 0A  	W  t5    c                  r     e Zd ZdZdZdZdZddZddZddZ	dddZ
ddZddZd fdZddZd dZ xZS )!WebPImageFileWEBPz
WebP imager   r   Nonec                   t          j        | j                                                  | _        | j                                        \  }}}}}}||f| _        || j        d<   |dz	  dz  |dz	  dz  |dz	  dz  |dz  f\  }}}	}
||	|
|f| j        d<   || _        | j        dk    | _	        |dk    rd	n|| _
        || _        g | _        | j                            d
          }| j                            d          }| j                            d          }|r
|| j        d<   |r
|| j        d<   |r
|| j        d<   |                     d           d S )Nloop      r   r   
backgroundr   RGBXr   ICCPEXIFzXMP icc_profileexifxmpF)reset)r
   WebPAnimDecoderfpread_decoderget_info_sizeinfon_framesis_animated_moderawmodetile	get_chunk_reset)selfwidthheight
loop_countbgcolorframe_countmodebg_abg_rbg_gbg_br*   r+   r,   s                 r   _openzWebPImageFile._open+   s}    -dgllnn== AE@V@V@X@X=vz7KF]
&	&]d"]d"\T!dN	"
dD$ $(tT":	,#=1,"fnnUU$
	 m--f55}&&v..m%%f-- 	3'2DIm$ 	% $DIf 	#"DIe 	%     r   dict[int, Any] | Nonec                d    d| j         vrd S |                                                                 S )Nr+   )r4   getexif_get_merged_dictr<   s    r   _getexifzWebPImageFile._getexifO   s.    ""4||~~..000r   frameintc                B    |                      |          sd S || _        d S N)_seek_check_WebPImageFile__logical_framer<   rN   s     r   seekzWebPImageFile.seekT   s-    && 	F  %r   Tr-   boolc                f    |r| j                                          d| _        d| _        d| _        d S )Nr   )r1   r-   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r<   r-   s     r   r;   zWebPImageFile._reset[   s;     	"M!!! !r   tuple[bytes, int, int]c                   | j                                         }| xj        dz  c_        |:|                                  |                     d           d}t          |          |\  }}|| j        z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)r1   get_nextrY   r;   rU   EOFErrorr[   )r<   retmsgdata	timestampdurations         r   	_get_nextzWebPImageFile._get_nextb   s    m$$&&" ;KKMMMIIaLLL<C3-- it//$ 	X	Y((r   c                    | j         |k    rd S || j         k     r|                                  | j         |k     r!|                                  | j         |k     d S d S rQ   )rY   r;   re   rT   s     r   _seekzWebPImageFile._seekw   sj     E))F4(((KKMMM#e++NN #e++++++r   Image.core.PixelAccess | Nonec                   | j         | j        k    r|                     | j                   |                                 \  }}}|| j        d<   || j        d<   | j        | _         | j        r | j        r| j                                         t          |          | _        t          j
        dd| j        z   d| j                  g| _        t                                                      S )Nrc   rd   raw)r   r   r   )rZ   rS   rg   re   r4   r/   _exclusive_fpcloser   r	   _Tilesizer8   r9   superload)r<   rb   rc   rd   	__class__s       r   rp   zWebPImageFile.load   s    =D000JJt+,,, )-(8(8%D)X%.DIk"$,DIj! 0DM w  4-  dmmDG"0BAt|TTUDIww||~~r   posc                    d S rQ    )r<   rr   s     r   	load_seekzWebPImageFile.load_seek   s    r   c                    | j         S rQ   )rS   rL   s    r   tellzWebPImageFile.tell   s    ##r   )r   r!   )r   rH   )rN   rO   r   r!   )T)r-   rV   r   r!   )r   r\   )r   rh   )rr   rO   r   r!   )r   rO   )__name__
__module____qualname__formatformat_descriptionrZ   rS   rG   rM   rU   r;   re   rg   rp   ru   rw   __classcell__)rq   s   @r   r   r   %   s        F%HO"! "! "! "!H1 1 1 1
% % % %    ) ) ) )*        $   $ $ $ $ $ $ $ $r   r   imImage.Imagec                T    | j         dvr|                     | j        rdnd          } | S )N)r'   r   r   r   r   )rB   converthas_transparency_data)r~   s    r   _convert_framer      s2    	w---ZZ"":EFFIr   r/   	IO[bytes]filenamestr | bytesr!   c                ~	   | j                                         }t          |                    dg                     }d}| g|z   D ]}|t	          |dd          z  }|dk    rt          | ||           d S d}d|v r	|d         }ned| j        v r\| j        d         }t          |t                    r:| 	                                }|r||dz  |dz   dz           \  }	}
}|	|
|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          pd}| j                             dd          }t          |t          j                  r|                                }| j                             dd          }|rd}||rdnd}||rdnd}t          |t          t          f          r,t          |          dk    st          d |D                       sd| }t!          |          |\  }}}}|d z  |d!z  z  |d"z  z  |dz  z  }t#          j        | j        d         | j        d         |||||||	  	        }d} d}!|                                 }"	 | g|z   D ]}t	          |dd          }#t+          |#          D ]}$|                    |$           t/          |          }%|                    |%                                t5          |!          ||||           t          |t          t          f          r|!||          z  }!n|!|z  }!| dz  } 	 |                     |"           n# |                     |"           w xY w|                    d t5          |!          |||d           |                    |||          }&|&d#}t!          |          |                    |&           d S )$Nappend_imagesr   r5   r   )r   r   r   r   r&      r%   rd   r#   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr*    r+   r,   	         r   c              3  6   K   | ]}d |cxk    odk     nc V  dS )r      Nrt   ).0vs     r   	<genexpr>z_save_all.<locals>.<genexpr>   s6      44A1<<<<C<<<<444444r   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_saver4   
isinstancerO   
getpaletter   ExiftobytestuplelenallOSErrorr
   WebPAnimEncoderrn   rw   rangerU   r   addgetimroundassemblewrite)'r~   r/   r   r   r   totalimsr&   palettergbrd   r#   r   r   r   r   verboser   r   r   r   r*   r+   r,   ra   rD   rE   rF   rC   enc	frame_idxrc   cur_idxnfridxrN   rb   s'                                          r   	_save_allr      s   .%%''K"==>>M Etm# - -j!,,,zzb"h(4J{"" .

		 	 W\*
j#&& 	G mmooG G!*q.JNa3G"GH1aAs^

(*j#F
~!!*bgkk*a.H.HIIH>fa((DN&&>>M>fd++D>fd++D.$$]E::KG~!!*e44Hn  B//GN&&<<M^!,,F.$$]339rK>fb))D$
## ||~~
.

UB
'
'C  |#qq!|$rr1 zD%=11z??a4444444   X:WWcll (D$d"*,	:daiHJ 





 
C IIggiiG4-' 	 	C#z1--CSzz  &s++ KKMM)$$!   hu66 *)!44II)IQ		)		6 	 GGD%	""Hg}aHHH <<T3//D|AcllHHTNNNNNs   +B;P= =Qc                V   | j                             dd          }| j                             dd          }| j                             dd          }| j                             d          pd}| j                             d	d
          }t          |t          j                  r|                                }|                    d          r
|dd          }| j                             dd          }| j                             dd          }	| j                             d          rdnd}
t          |           } t          j	        | 
                                |t          |          t          |          ||	|
||	  	        }|d}t          |          |                    |           d S )Nr   Fr   r   r   r   r*   r   r+   r   s   Exif     r,   r   r   exactr   r   r   )r   r   r   r   r   r   
startswithr   r
   
WebPEncoder   floatr   r   )r~   r/   r   r   r   r   r*   r+   r,   r   r   rb   ra   s                r   r   r     s   ~!!*e44Hn  B//GN&&<<M.$$]339rK>fc**D$
## ||~~'' ABBx
.

UB
'
'C^!,,F##G,,3AA!E			B


gm
 
D |AcllHHTNNNNNr   z.webpz
image/webpN)r   r   r   r   )r~   r   r   r   )r~   r   r/   r   r   r   r   r!   )
__future__r   ior   typingr   r   r   r   r	   r
   r   ImportErrorr   r   r   r   r   r   register_openr{   register_saveregister_save_allregister_extensionregister_mimert   r   r   <module>r      s   " " " " " "                      II   III
      p$ p$ p$ p$ p$I' p$ p$ p$f   z z z zz   D  M(- A A A <E,e444EM0)<<<E]17;;;E,l;;;;;	< <s   ' 11