B ¥.¦^+ã@sìddlmZddlmZmZyddlmZdZWnek rHdZYnXddddœZdddœZ d d d d œZ d d „Z Gdd„dejƒZ dd„Z dd„Ze e je e ¡erèe e je¡ejrÌe e je ¡e e jd¡e e jd¡dS)é)ÚBytesIOé)ÚImageÚ ImageFile)Ú_webpTF)ÚRGBXÚRGBAÚRGB)r rr r)sVP8 sVP8XsVP8LcCsL|dd…dk}|dd…dk}|dd…tk}|rH|rH|rHtsDdSdSdS) NésRIFFéé sWEBPézEimage file could not be identified because WEBP support not installedT)Ú_VP8_MODES_BY_IDENTIFIERÚ SUPPORTED)ÚprefixZis_riff_file_formatZ is_webp_fileZis_valid_vp8_mode©rú7/tmp/pip-install-mwhup7aw/Pillow/PIL/WebPImagePlugin.pyÚ_accepts rcs~eZdZdZdZdd„Zdd„Zedd„ƒZed d „ƒZ ‡fd d „Z ddd„Z dd„Z dd„Z ‡fdd„Z‡fdd„Z‡ZS)Ú WebPImageFileZWEBPz WebP imagecCsˆtjsvt |j ¡¡\}}}|_}}|r2||jd<|r@||jd<||f|_t|ƒ|_dd|j d|jfg|_ d|_ dSt  |j ¡¡|_ |j  ¡\}}}}}} ||f|_||jd<|d?d @|d ?d @|d ?d @|d @f\} } } } | | | | f|jd <||_ | d krdn| |_| |_g|_ |j  d¡}|j  d¡}|j  d¡}|rN||jd<|r^||jd<|rn||jd<|jdd| d¡dS)NÚ icc_profileÚexifÚraw)rrrrÚloopééÿr r Ú backgroundrr ZICCPZEXIFzXMP ÚxmpF)Úreset)rÚ HAVE_WEBPANIMZ WebPDecodeÚfpÚreadÚmodeÚinfoÚ_sizerÚsizeÚtileÚ _n_framesZWebPAnimDecoderÚ_decoderÚget_infoÚrawmodeZ get_chunkÚ_resetÚseek)ÚselfÚdataÚwidthÚheightrrZ loop_countZbgcolorZ frame_countr!Úbg_aÚbg_rÚbg_gÚbg_brrrrÚ_open*sH                zWebPImageFile._opencCsd|jkrdSt| ¡ƒS)Nr)r"ÚdictZgetexif)r,rrrÚ_getexif]s zWebPImageFile._getexifcCs|jS)N)r&)r,rrrÚn_framesbszWebPImageFile.n_framescCs |jdkS)Nr)r&)r,rrrÚ is_animatedfszWebPImageFile.is_animatedcs>tjstƒ |¡S||jkr$tdƒ‚|dkr4tdƒ‚||_dS)Nz(attempted to seek beyond end of sequencerz!negative frame index is not valid)rrÚsuperr+r&ÚEOFErrorÚ_WebPImageFile__logical_frame)r,Úframe)Ú __class__rrr+js  zWebPImageFile.seekTcCs$|r|j ¡d|_d|_d|_dS)Nréÿÿÿÿ)r'rÚ_WebPImageFile__physical_frameÚ_WebPImageFile__loadedÚ_WebPImageFile__timestamp)r,rrrrr*ws  zWebPImageFile._resetcCsd|j ¡}|jd7_|dkr:| ¡| d¡tdƒ‚|\}}||j}||_||8}|||fS)Nrrz(failed to decode next frame in WebP file)r'Zget_nextr?r*r+r:rA)r,Úretr-Ú timestampÚdurationrrrÚ _get_next~s   zWebPImageFile._get_nextcCs<|j|krdS||jkr | ¡x|j|kr6| ¡q"WdS)N)r?r*rE)r,r<rrrÚ_seek’s    zWebPImageFile._seekcsŠtjr€|j|jkr€| |j¡| ¡\}}}||jd<||jd<|j|_|jr^|jr^|j  ¡t |ƒ|_dd|j d|j fg|_ tƒ ¡S)NrCrDr)rrr)rrr@r;rFrEr"rZ _exclusive_fpÚcloserr$r)r%r9Úload)r,r-rCrD)r=rrrHšs       zWebPImageFile.loadcstjstƒ ¡S|jS)N)rrr9Útellr;)r,)r=rrrI­s zWebPImageFile.tell)T)Ú__name__Ú __module__Ú __qualname__ÚformatÚformat_descriptionr4r6Úpropertyr7r8r+r*rErFrHrIÚ __classcell__rr)r=rr%s3    rc' CsÒ|j ¡}t| dg¡ƒ}d}x"|g|D]}|t|ddƒ7}q*W|dkrZt|||ƒdSd}d|krp|d}nTd|jkrÄ|jd}t|tƒrÄ|  ¡}|rÄ||d|dd…\} } } | | | df}|j dd¡} |j d d¡} |j d d ¡}|j d d¡}|j d d¡}|j dd ¡}d }|j dd ¡}|j dd¡}|j dd¡}|j dd¡}|j dd¡}t|t j ƒrx|  ¡}|j dd¡}|rd }|dkr¨|r¤dnd}|dkrÀ|r¼dnd}t|tt fƒròt|ƒdksòtdd„|Dƒƒstdt|ƒƒ‚|\}}}}|d>|d>B|d >B|d>B}t |jd|jd|| |||||¡ }d}d}| ¡} zx|g|D]}t|ddƒ}!xìt|!ƒD]à}"| |"¡| ¡|}#|j}$|jtkrd!|jkpîd"|jkpî|jd#koîd!|j ¡k}%|%rúd$nd%}$| |$¡}#|$d%krd&}$| |#  d'|$¡||#jd|#jd|$|||¡t| tt fƒr`|| |7}n|| 7}|d7}q’WqvWWd| | ¡X| d|ddd||d¡| |||¡}&|&dkrÄtd(ƒ‚|  |&¡dS))NÚ append_imagesrr7r)rrrrrérDrÚ minimize_sizeFÚkminÚkmaxÚ allow_mixedÚlosslessÚqualityéPÚmethodrÚrré éér css|]}|dko|dkVqdS)réNr)Ú.0Úvrrrú êsz_save_all..zs0       "