
     f-                       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d
ZddddZd!dZ G d de	j	                  Zd"dZd"dZ ej        ej        ee           era ej        ej        e           e
j        r 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)RGBXRGBARGB)r   r   r   r   )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       V/var/www/api.educacionweb.es/myenv/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 ZddZ fdZddZd fdZ xZS )WebPImageFileWEBPz
WebP imager   r   Nonec                   t           j        st          j        | j                                                  \  }}}| _        }}|r
|| j        d<   |r
|| j        d<   ||f| _        t          |          | _        dd| j	        z   d| j
        fg| _        d| _        d| _        d S 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icc_profileexifrawr   r   r   r   Floop      r   r   
backgroundr   r   ICCPEXIFzXMP xmp)reset)r
   HAVE_WEBPANIM
WebPDecodefpread_modeinfo_sizer   sizemodetilen_framesis_animatedWebPAnimDecoder_decoderget_inforawmode	get_chunk_reset)selfdatawidthheightr$   r%   
loop_countbgcolorframe_countr8   bg_abg_rbg_gbg_br.   s                  r   _openzWebPImageFile._open/   s*   " 	AFAQB B>D%[$  7+6	-( )$(	&!DJdmmDG$)!3Q	BCDIDM$DF -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[str, Any] | Nonec                d    d| j         vrd S |                                                                 S )Nr%   )r5   getexif_get_merged_dict)rB   s    r   _getexifzWebPImageFile._getexifc   s.    ""4||~~..000r   frameintc                B    |                      |          sd S || _        d S N)_seek_check_WebPImageFile__logical_framerB   rS   s     r   seekzWebPImageFile.seekh   s-    && 	F  %r   Tr/   boolc                f    |r| j                                          d| _        d| _        d| _        d S )Nr   )r=   r/   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)rB   r/   s     r   rA   zWebPImageFile._reseto   s;     	"M!!! !r   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)r=   get_nextr^   rA   rZ   EOFErrorr`   )rB   retmsgrC   	timestampdurations         r   	_get_nextzWebPImageFile._get_nextv   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 rV   )r^   rA   rh   rY   s     r   _seekzWebPImageFile._seek   sj     E))F4(((KKMMM#e++NN #e++++++r   c                   t           j        r| j        | j        k    r|                     | j                   |                                 \  }}}|| j        d<   || j        d<   | j        | _        | j        r | j        r| j        	                                 t          |          | _        dd| j        z   d| j        fg| _        t                                                      S )Nrf   rg   r&   r'   r   )r
   r0   r_   rX   rj   rh   r5   r2   _exclusive_fpcloser   r7   r?   r9   superload)rB   rC   rf   rg   	__class__s       r   ro   zWebPImageFile.load   s     	K} 444

4/000 -1NN,<,<)i)2	+&(0	*% $ 4 7 $t1 $GMMOOO!$--#Vdi%7DLIJ	ww||~~r   posc                    d S rV    )rB   rq   s     r   	load_seekzWebPImageFile.load_seek   s    r   c                j    t           j        s t                                                      S | j        S rV   )r
   r0   rn   tellrX   )rB   rp   s    r   rv   zWebPImageFile.tell   s)    " 	"77<<>>!##r   )r   r"   )r   rN   )rS   rT   r   r"   )T)r/   r[   r   r"   )rq   rT   r   r"   )r   rT   )__name__
__module____qualname__formatformat_descriptionr_   rX   rM   rR   rZ   rA   rh   rj   ro   rt   rv   __classcell__)rp   s   @r   r    r    )   s        F%HO2! 2! 2! 2!h1 1 1 1
% % % %    ) ) )*       &   $ $ $ $ $ $ $ $ $ $r   r    imImage.Imager2   	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 ]I}t	          |dd          }#t+          |#          D ]$}$|                    |$           |                                 |}%|j        }&|j        t2          vrSd#|j        v p.d$|j        v p%|j        d%k    od#|j                                        v }'|'rd&nd'}&|                    |&          }%|&d'k    rd(}&|                    |%                    d)|&          t=          |!          |%j        d         |%j        d         |&||||	  	         t          |t          t          f          r|!||          z  }!n|!|z  }!| dz  } &K	 |                     |"           n# |                     |"           w xY w|                    d t=          |!          ddd|||d	  	         |                    |||          }(|(d*}t!          |          |                     |(           d S )+Nappend_imagesr   r:   r   )r   r   r   r   r+      r*   rg   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      Nrs   ).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   AaPr   r   r   r&   1cannot write file as WebP (encoder returned None))!encoderinfocopylistgetgetattr_saver5   
isinstancerT   
getpaletter   ExiftobytestuplelenallOSErrorr
   WebPAnimEncoderr7   rv   rangerZ   ro   r8   _VALID_WEBP_MODESr}   getpalettemodeconvertaddroundassemblewrite))r}   r2   r   r   r   totalimsr+   palettergbrg   r(   r   r   r   r   verboser   r   r   r   r$   r%   r.   re   rJ   rK   rL   rI   enc	frame_idxrf   cur_idxnfridxrS   r?   alpharC   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 & &


 (8#444sx P#(?PHONsv7L7L7N7N0N 
 ).8ff5GKK00Ee##$G MM%11)$$JqMJqM!
 
 
 hu66 *)!44II)IQ		M&	*	Z 	 GGD%	""Aq"hPQRRR <<T3//D|AcllHHTNNNNNs   +ES S*c                   | 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}
| j        t          vr| 	                    | j
        rdnd          } t          j        |                                 | j        d         | j        d         |t          |          t          |          | j        ||	|
||          }|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   
startswithr8   _VALID_WEBP_LEGACY_MODESr   has_transparency_datar
   
WebPEncoder7   floatr   r   )r}   r2   r   r   r   r   r$   r%   r.   r   r   rC   re   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	w...ZZ"":EFF






gm
 D |AcllHHTNNNNNr   z.webpz
image/webpN)r   r   r   r   )r}   r~   r2   r   r   r   r   r"   )
__future__r   ior   typingr   r   r   r   r	   r
   r   ImportErrorr   r   r   r   r    r   r   register_openrz   register_saver0   register_save_allregister_extensionregister_mimers   r   r   <module>r      s   " " " " " "                      II   III "4== #'66       D$ D$ D$ D$ D$I' D$ D$ D$NL L L L^# # # #L  M(- A A A <E,e444 A 4i@@@E]17;;;E,l;;;;;< <s   ' 11