3 }\ + @sddlmZmZyddlmZdZWnek r<dZYnXddlmZddddZdddZ d d d d Z d d Z GdddejZ ddZ ddZeje je e ereje jeejreje je eje jdeje jddS))Image ImageFile)_webpTF)BytesIO)RGBXRGBARGB)r rr r)sVP8 sVP8XsVP8LcCsL|dddk}|dddk}|ddtk}|rH|rH|rHtsDdSdSdS) NsRIFF sWEBPzEimage file could not be identified because WEBP support not installedT)_VP8_MODES_BY_IDENTIFIER SUPPORTED)prefixZis_riff_file_formatZ is_webp_fileZis_valid_vp8_moderk/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-i584jbuk/Pillow/PIL/WebPImagePlugin.py_accepts rcs~eZdZdZdZddZddZeddZed d Z fd d Z dddZ ddZ ddZ fddZfddZZS) WebPImageFileZWEBPz WebP imagecCstjsvtj|jj\}}}|_}}|r2||jd<|r@||jd<||f|_t||_dd|j d|jfg|_ d|_ dStj |jj|_ |j j\}}}}}} ||f|_||jd<|d?d@|d ?d@|d ?d@|d@f\} } } } | | | | f|jd <||_ | d krd n| |_| |_g|_ |j jd}|j jd}|j jd}|rN||jd<|r^||jd<|rn||jd<|jdd|jddS)N icc_profileexifrawrrloopr r backgroundrr ZICCPZEXIFzXMP xmpF)reset)rr)r HAVE_WEBPANIMZ WebPDecodefpreadmodeinfo_sizersizetile _n_framesZWebPAnimDecoder_decoderget_inforawmodeZ get_chunk_resetseek)selfdatawidthheightrrZ loop_countZbgcolorZ frame_countr!bg_abg_rbg_gbg_brrrr_open-sF                zWebPImageFile._opencCsd|jkrdSt|jS)Nr)r"dictZgetexif)r,rrr_getexif_s zWebPImageFile._getexifcCs|jS)N)r&)r,rrrn_framesdszWebPImageFile.n_framescCs |jdkS)Nr)r&)r,rrr is_animatedhszWebPImageFile.is_animatedcsBtjstt|j|S||jkr(td|dkr8td||_dS)Nz(attempted to seek beyond end of sequencerz!negative frame index is not valid)rrsuperrr+r&EOFError_WebPImageFile__logical_frame)r,frame) __class__rrr+ls zWebPImageFile.seekTcCs$|r|jjd|_d|_d|_dS)Nrr)r'r_WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r,rrrrr*ys  zWebPImageFile._resetcCsd|jj}|jd7_|dkr:|j|jdtd|\}}||j}||_||8}|||fS)Nrrz(failed to decode next frame in WebP file)r'Zget_nextr?r*r+r:rA)r,retr- timestampdurationrrr _get_nexts   zWebPImageFile._get_nextcCs<|j|krdS||jkr |jx|j|kr6|jq"WdS)N)r?r*rE)r,r<rrr_seeks    zWebPImageFile._seekcstjr|j|jkr|j|j|j\}}}||jd<||jd<|j|_|jr^|jr^|jj t ||_dd|j d|j fg|_ tt|jS)NrCrDrr)rr)rrr@r;rFrEr"rZ _exclusive_fpcloserr$r)r%r9rload)r,r-rCrD)r=rrrHs       zWebPImageFile.loadcstjstt|jS|jS)N)rrr9rtellr;)r,)r=rrrIszWebPImageFile.tell)T)__name__ __module__ __qualname__formatformat_descriptionr4r6propertyr7r8r+r*rErFrHrI __classcell__rr)r=rr(s2    rc'Cs|jj}t|jdg}d}x"|g|D]}|t|dd7}q*W|dkrZt|||dSd(}d|krp|d}nTd|jkr|jd}t|tr|j }|r||d|dd\} } } | | | df}|jjdd} |jjdd} |jjd d }|jjd d}|jjd d}|jjd d }d }|jjdd }|jjdd}|jjdd}|jjdd}|jjdd}t|t j rx|j }|jjdd}|rd }|dkr|rdnd}|dkr|rdnd}t|tt f st|dkstdd|D rtdt||\}}}}|d>|d>B|d>B|d>B}tj|jd|jd|| ||||| }d}d}|j} zx|g|D]}t|dd}!xt|!D]}"|j|"|j|}#|j}$|jtkr d |jkpd!|jkp|jd"kod |jjk}%|%rd#nd$}$|j|$}#|$d$krd%}$|j|#j d&|$||#jd|#jd|$|||t| tt frd|| |7}n|| 7}|d7}qWqzWWd|j| X|jd|ddd||d|j|||}&|&dkrtd'|j |&dS))N append_imagesrr7rrrDr minimize_sizeFkminkmax allow_mixedlosslessqualityPmethodrrr r css|]}|dko|dkVqdS)rNr).0vrrr sz_save_all..zs6