
    ZMhh#                       d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
 	 ddlmZ dZn# e$ r d	ZY nw xY wd
Zd Zd&dZd'dZd(dZ G d de
j
                  Zd)dZ	 d*d+d"Z e	j        ej        ee           er\ e	j        ej        e            e	j        ej        e            e	j        ej        d#d$g            e	j        ej        d%           dS dS ),    )annotationsN)BytesIO)IO   )ExifTagsImage	ImageFile)_avifTFauto
codec_namestrreturn
str | Nonec                   t          j                    }|                    d          D ]W}|                    d          d         | k    r6|                    d          d                             d          d         c S Xd S )Nz, z [r   : )r
   codec_versionssplit)r   versionsversions      S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/PIL/AvifImagePlugin.pyget_codec_versionr      s    #%%H>>$'' 8 8==q!Z//==%%b)//44Q7777 04    prefixbytes
bool | strc                Z    | dd         dk    rdS | dd         }|dv rt           s	 dS dS dS )	N      s   ftypF   )s   avifs   aviss   mif1s   msf1zEimage file could not be identified because AVIF support not installedT)	SUPPORTED)r   major_brands     r   _acceptr$      s\    ac{gu2,K     	W  t5r   intc                     t           rt           S t          t          d          r!t          t          j        d                    S t          j                    pdS )Nsched_getaffinityr   r   )DEFAULT_MAX_THREADShasattroslenr'   	cpu_count r   r   _get_default_max_threadsr.   9   sM     #""r&'' #2'**+++|~~""r   c                  L     e Zd ZdZdZdZddZdd	Zd fdZddZ	ddZ
 xZS )AvifImageFileAVIFz
AVIF imager   r   Nonec                (   t           sd}t          |          t          dk    r*t          j        t                    sd}t          |          t          j        | j                                        t          t                                | _
        | j
                                        \  | _        | _        | _        }}}}| j        dk    | _        |r
|| j        d<   |r
|| j        d<   |dk    s|rt#          j                    }|r;|                    |           |                    t*          j        j        d          }nd}||k    r(||t*          j        j        <   |                                }|r
|| j        d<   |                     d           d S )	NzAimage file could not be opened because AVIF support not installedr   zInvalid opening codecr   icc_profilexmpexifr   )r"   SyntaxErrorDECODE_CODEC_CHOICEr
   decoder_codec_available
ValueErrorAvifDecoderfpreadr.   _decoderget_info_sizen_frames_modeis_animatedinfor   Exifloadgetr   BaseOrientationtobytesseek)selfmsgiccr6   exif_orientationr5   	exif_dataoriginal_orientations           r   _openzAvifImageFile._openG   s    	#UCc"""&((1N2
 2
( *CS//!)GLLNN$&&
 
 M""$$ 	P
DM4:sD:JC  =1, 	+'*DIm$ 	#"DIeq  D 
I )t$$$'0}}X]5NPQ'R'R$$'($#7777G	(-34 ((** 	% $DIf		!r   framer%   c                    |                      |          sd S || _        t          j        dd| j        z   d| j                  g| _        d S )Nraw)r   r   r   )_seek_check_AvifImageFile__framer	   _Tilesizemodetile)rL   rS   s     r   rK   zAvifImageFile.seekp   sM    && 	F _UFTY,>49MMN			r   Image.core.PixelAccess | Nonec                   | j         r| j                            | j                  \  }}}}t	          d||z  z            | j        d<   t	          d||z  z            | j        d<   | j        r | j        r| j                                         t          |          | _        t                                                      S )Ni  	timestampduration)r[   r>   	get_framerW   roundrD   r<   _exclusive_fpcloser   superrF   )rL   data	timescalepts_in_timescalesduration_in_timescales	__class__s        r   rF   zAvifImageFile.loadx   s    9 
	$ ''55 GD).0F &+43Dy3P+Q%R%RDIk"$)$2H92T*U$V$VDIj!w  4-  dmmDGww||~~r   posc                    d S Nr-   )rL   rj   s     r   	load_seekzAvifImageFile.load_seek   s    r   c                    | j         S rl   )rW   )rL   s    r   tellzAvifImageFile.tell   s
    |r   )r   r2   )rS   r%   r   r2   )r   r\   )rj   r%   r   r2   r   r%   )__name__
__module____qualname__formatformat_descriptionrW   rR   rK   rF   rm   ro   __classcell__)ri   s   @r   r0   r0   B   s        F%G' ' ' 'RO O O O               r   r0   imImage.Imager<   	IO[bytes]filenamestr | bytesr2   c                ,    t          | ||d           d S )NT)save_all)_save)rw   r<   rz   s      r   	_save_allr      s    	"b(T******r   r}   boolc                
   | j                                         }|r$t          |                    dg                     }ng }d}| g|z   D ]}|t	          |dd          z  }|                    dd          }t          |t                    r|dk     s|dk    rd}	t          |	          |                    d	d          }
|                    d
d          }|                    dd          }|                    dt                                }|                    dd          }|dk    r%t          j
        |          sd}	t          |	          |                    dd          }|                    dd          }|                    dd          }t          |                    dd                    }t          |                    d||cxk    odk    nc                     }|                    d| j                            d                    }d}|                    d          x}rt          |t          j                  r|}n(t          j                    }|                    |           t           j        j        |v r=|                    t           j        j                  }|r|                                nd}n.t          |t          j                  r|                                }|                    d          }t          |t*                    r|                    d          }|                    d          }|xt          |t.                    r|                                }	 t3          |          }t5          d |D                       }n# t6          $ r d }Y nw xY w|rd!}	t          |	          t          j        | j        |||||||||||pd|pd||pd|          }d}d}|                                 }|dk    }	 | g|z   D ]}t	          |dd          } t?          |           D ]}!|                     |!           |}"|j!        }#|j!        d"vr |j"        rd#nd$}#|#                    |#          }"t          |
t          t2          f          r	|
|         }n|
}|$                    |"                    d%|#          ||"j        |#|           |dz  }|s n	 |                      |           n# |                      |           w xY w|%                                }$|$d&}	tM          |	          |'                    |$           d S )'Nappend_imagesr   rA   r   qualityK   d   zInvalid quality settingr_   subsamplingz4:2:0speed   max_threadscodecr   zInvalid saving codecrangefull	tile_rows	tile_colsalpha_premultipliedF
autotilingr4   r6   r   r5   zutf-8advancedc              3  h   K   | ]-}t          |t                     pt          |          d k    V  .dS )   N)
isinstancetupler+   ).0vs     r   	<genexpr>z_save.<locals>.<genexpr>   s>      TTajE222Ac!ffkTTTTTTr   Tzcadvanced codec options must be a dict of key-value string pairs or a series of key-value two-tuples>   RGBRGBAr   r   rU   z1cannot write file as AVIF (encoder returned None))(encoderinfocopylistrG   getattrr   r%   r:   r.   r
   encoder_codec_availabler   rD   r   rE   rF   r   rH   rI   poprJ   r   encodedictitemsr   any	TypeErrorAvifEncoderrY   ro   r   rK   rZ   has_transparency_dataconvertaddfinishOSErrorwrite)%rw   r<   rz   r}   rD   r   totalimsr   rM   r_   r   r   r   r   range_tile_rows_log2tile_cols_log2r   r   r4   rO   r6   rP   r5   r   invalidenc	frame_idxframe_durationcur_idxis_single_framenfridxrS   rawmodere   s%                                        r   r~   r~      s    >  D TXXor::;;Etm# - -j!,,,hhy"%%Ggs## w{{gmm'ooxx
A&&H((='22KHHWa  E((=*B*D*DEEKHHWf%%Eu<UCC$ooXXgv&&FXXk1--NXXk1--Ntxx(=uEEFFdhh|^~-R-R-R-RQR-R-R-R-RSSTTJ((="'++m*D*DEEKxxt 
'dEJ'' 	!II
INN4   =$	11(}}X]-FGG*3<9$$&&&DDej)) 	'$$&&D
((5//C#s "jj!!xx
##Hh%% 	(~~''H	UXH TT8TTTTTGG  	 	 	GGG	  	"<  S//! 

s
s! C( INggiiGqjO%4-' !	 !	C#z1--CSzz   (8?22(+(ALffuGKK00E hu66 .%-i%8NN%-N MM%11"J#   Q	 EA!	H 	 ::<<D|AcllHHTNNNNNs   .N N&%N&	CS5 5Tz.avifz.avifsz
image/avif)r   r   r   r   )r   r   r   r   rp   )rw   rx   r<   ry   rz   r{   r   r2   )F)
rw   rx   r<   ry   rz   r{   r}   r   r   r2   )
__future__r   r*   ior   typingr    r   r   r	   r
   r"   ImportErrorr8   r(   r   r$   r.   r0   r   r~   register_openrt   register_saveregister_save_allregister_extensionsregister_mimer-   r   r   <module>r      s   " " " " " " 				             ( ( ( ( ( ( ( ( ( (II   III
         4# # # #I I I I II' I I IX+ + + +
 MRJ J J J JZ  M(- A A A <E,e444EM0)<<<Em2Wh4GHHHE,l;;;;;	< <s   + 55