)Ej|%ddlmZddlZddlmZddlmZddlmZm Z m Z m Z  ddlm Z dZ n #e$rd Z YnwxYwd ZdZd&dZd'dZd(dZGdde j Zd)dZ d*d+d"Ze jejeee r\e jejee jejee jejd#d$ge jejd%dSdS),) annotationsN)BytesIO)IO)ExifTagsImage ImageFile ImageSequence)_avifTFauto codec_namestrreturn str | Nonectj}|dD]W}|dd|kr6|ddddcSXdS)Nz, z [r: )r codec_versionssplit)r versionsversions EC:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/AvifImagePlugin.pyget_codec_versionrs#%%H>>$''88 ==  q !Z / /==%%b)//44Q7 7 7 7 0 4prefixbytes bool | strcZ|dddkrdS|dd}|dvr ts dSdSdS) NsftypF )savifsavissmif1smsf1zEimage file could not be identified because AVIF support not installedT) SUPPORTED)r major_brands r_acceptr%s\ ac{gu2,K    W  t 5rintctrtSttdr!ttjdStjpdS)Nsched_getaffinityrr)DEFAULT_MAX_THREADShasattroslenr( cpu_countrr_get_default_max_threadsr/8sM#""r&''#2'**+++|~~""rcLeZdZdZdZdZddZdd Zdfd Zdd Z ddZ xZ S) AvifImageFileAVIFz AVIF imagerrNonec:tsd}t|tdkr*tjtsd}t ||jJtj|jtt|_ |j \|_ |_ |_}}}}|j dk|_|r ||jd<|r ||jd<|dks|rt#j}|r;|||t*jjd}nd}||kr(||t*jj<|}|r ||jd<|ddS) NzAimage file could not be opened because AVIF support not installedr zInvalid opening codecr icc_profilexmpexifr)r# SyntaxErrorDECODE_CODEC_CHOICEr decoder_codec_available ValueErrorfp AvifDecoderreadr/_decoderget_info_sizen_frames_mode is_animatedinforExifloadgetrBase Orientationtobytesseek)selfmsgiccr7exif_orientationr6 exif_dataoriginal_orientations r_openzAvifImageFile._openFs #UCc"" " & ( (1N 2 2 (*CS// !w""") GLLNN  $ & &    M " " $ $ P DM4:sD:JC =1,  +'*DIm $  #"DIe  q D  I )t$$$'0}}X]5NPQ'R'R$$'($#7777G (-34 ((**  % $DIf  ! rframer&c||sdS||_tjdd|jzd|jg|_dS)Nraw)rrr) _seek_check_AvifImageFile__framer _Tilesizemodetile)rMrTs rrLzAvifImageFile.seekqsM&&  F _UFTY,>49MMN rImage.core.PixelAccess | Nonec|jr|j|j\}}}}t d||z z|jd<t d||z z|jd<|jr |jr|jt||_t S)Ni timestampduration) r\r? get_framerXroundrEr< _exclusive_fpclosersuperrG)rMdata timescalepts_in_timescalesduration_in_timescales __class__s rrGzAvifImageFile.loadys 9 $ '' 55 GD).0F&+43Dy3P+Q%R%RDIk "$)$2H92T*U$V$VDIj !w 4-  dmmDGww||~~rposcdSNr.)rMrks r load_seekzAvifImageFile.load_seeks rc|jSrm)rX)rMs rtellzAvifImageFile.tells |r)rr3)rTr&rr3)rr])rkr&rr3rr&) __name__ __module__ __qualname__formatformat_descriptionrXrSrLrGrnrp __classcell__)rjs@rr1r1As F%G))))VOOOO          rr1im Image.Imager< IO[bytes]filename str | bytesr3c,t|||ddS)NT)save_all)_save)rxr<r{s r _save_allrs "b(T******rr~boolc #|j}|r$t|dg}ng}hd#t #fd|g|zD}|dd}t |t r |dks|dkrd}t||d d} |d |rd nd } |d d} |dt} |dd} | dkr%tj | sd}t||dd}|dd}|dd}t|dd}t|d||cxkodknc}|d|j d}d}|dx}rt |tjr|}n(tj}||t jj|vr=|t jj}|r|nd}n.t |tjr|}|d}t |t*r|d}|d }|xt |t.r|} t3|}t5d!|D}n#t6$rd"}YnwxYw|rd#}t|tj|j| || | | ||||||pd|pd||pd|}d}d}|}| ot?|d$d } |g|zD]}tAj!|D]} | j"}!|j"d%vr-|j#rd&}!n|j"#vrd'}!nd(}!| $|!} t | tt2fr | |}n| }|%| d)|!|| j|!||dz }|sn |&|n#|&|wxYw|'}"|"d*}tQ||)|"dS)+N append_images>I;16I;16BI;16LI;16N1FILc3XK|]$}tj|D] }|jvV%dSrm)r Iteratorr[).0imsrTgrayscale_modess r z_save..s` "+C00   o%rqualityKrdzInvalid quality settingr` subsamplingz4:0:0z4:2:0speed max_threadscodecr zInvalid saving codecrangefull tile_rows tile_colsalpha_premultipliedF autotilingr5rr7rr6zutf-8advancedc3hK|]-}t|t pt|dkV.dS)N) isinstancetupler,)rvs rrz_save..s>TTajE222Ac!ffkTTTTTTrTzcadvanced codec options must be a dict of key-value string pairs or a series of key-value two-tuplesrD>rRGBRGBArrrrVz1cannot write file as AVIF (encoder returned None))* encoderinfocopylistrHallrr&r;r/r encoder_codec_availablerrErrFrGrrIrJpoprKrencodedictitemsrany TypeError AvifEncoderrZrpgetattrr rr[has_transparency_dataconvertaddrLfinishOSErrorwrite)$rxr<r{r~rEr grayscalerrNr`rrrrrange_tile_rows_log2tile_cols_log2rrr5rPr7rQr6rinvalidenc frame_idxframe_durationcur_idxis_single_framerrTrawmoderfrs$ @rrrs >   DTXXor::;;  MMMO4-'I hhy"%%G gs # #w{{gmm'ooxx A&&H((=Y*K''GLLK HHWa E((=*B*D*DEEK HHWf % %E urs"""""" 777777777777IIIII 4####KKKKKI'KKK\++++ MRLLLLL^M(-AAA <E ,e444EM0)<<<Em2Wh4GHHHE ,l;;;;; <