
    ZMh'                       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         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   is_riff_file_formatis_webp_fileis_valid_vp8_modes       S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/PIL/WebPImagePlugin.py_acceptr      st     ++G44!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                                        \  | _        }}}}|| 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|| _
        || _        | 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	get_chunk_reset)self
loop_countbgcolorframe_countmodebg_abg_rbg_gbg_br*   r+   r,   s               r   _openzWebPImageFile._open+   sj    -dgllnn== >B]=S=S=U=U:
Jd&	&]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._getexifM   s.    ""4||~~..000r   frameintc                B    |                      |          sd S || _        d S N)_seek_check_WebPImageFile__logical_framer;   rK   s     r   seekzWebPImageFile.seekR   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._resetY   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_nextrV   r:   rR   EOFErrorrX   )r;   retmsgdata	timestampdurations         r   	_get_nextzWebPImageFile._get_next`   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 rN   )rV   r:   rb   rQ   s     r   _seekzWebPImageFile._seeku   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 )Nr`   ra   raw)r   r   r   )rW   rP   rd   rb   r4   r/   _exclusive_fpcloser   r	   _Tilesizer8   tilesuperload)r;   r_   r`   ra   	__class__s       r   rn   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 rN    )r;   rp   s     r   	load_seekzWebPImageFile.load_seek   s    r   c                    | j         S rN   )rP   rI   s    r   tellzWebPImageFile.tell   s    ##r   )r   r!   )r   rE   )rK   rL   r   r!   )T)r-   rS   r   r!   )r   rY   )r   re   )rp   rL   r   r!   )r   rL   )__name__
__module____qualname__formatformat_descriptionrW   rP   rD   rJ   rR   r:   rb   rd   rn   rs   ru   __classcell__)ro   s   @r   r   r   %   s        F%HO !  !  !  !D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   )r?   converthas_transparency_data)r|   s    r   _convert_framer      s2    	w---ZZ"":EFFIr   r/   	IO[bytes]filenamestr | bytesr!   c           
     Z	   | 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} 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%   ra   r#   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr*    r+   r,   	            c              3  6   K   | ]}d |cxk    odk     nc V  dS )r      Nrr   ).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   
isinstancerL   
getpaletter   ExiftobytestuplelenallOSErrorr
   WebPAnimEncoderrk   ru   rangerR   r   addgetimroundassemblewrite)'r|   r/   r   r   r   totalimsr&   palettergbra   r#   r   r   r   r   verboser   r   r   r   r*   r+   r,   r^   rA   rB   rC   r@   enc	frame_idxr`   cur_idxnfridxrK   r_   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   r   r   r
   
WebPEncoder   floatr   r   )r|   r/   r   r   r   r   r*   r+   r,   r   r   r_   r^   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_openry   register_saveregister_save_allregister_extensionregister_mimerr   r   r   <module>r      s   " " " " " "                      II   III
      n$ n$ n$ n$ n$I' n$ n$ n$b   y y y yx   D  M(- A A A <E,e444EM0)<<<E]17;;;E,l;;;;;	< <s   ' 11