
    ^jU$                       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
mZ 	 ddlmZ dZ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j0                  ee       erw e	j2                  ej0                  e        e	j4                  ej0                  e        e	j6                  ej0                  ddg        e	j8                  ej0                  d       yy# e$ r d	ZY w xY w)    )annotationsN)BytesIO)IO   )ExifTagsImage	ImageFileImageSequence)_avifTFautoc                    t        j                         }|j                  d      D ]A  }|j                  d      d   | k(  s|j                  d      d   j                  d      d   c S  y )Nz, z [r   : )r   codec_versionssplit)
codec_nameversionsversions      ^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/PIL/AvifImagePlugin.pyget_codec_versionr      sg    ##%H>>$' 8==q!Z/==%b)//4Q778     c                :    | dd dk7  ry| dd }|dv r	t         s	 yyy)	N      s   ftypF   )s   avifs   aviss   mif1s   msf1zEimage file could not be identified because AVIF support not installedT)	SUPPORTED)prefixmajor_brands     r   _acceptr       s@    a{g2,K   W r   c                     t         rt         S t        t        d      rt        t        j                  d            S t        j
                         xs dS )Nsched_getaffinityr   r   )DEFAULT_MAX_THREADShasattroslenr"   	cpu_count r   r   _get_default_max_threadsr)   8   s=    ""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   c                P   t         sd}t        |      t        dk7  r&t        j                  t              sd}t        |      | j                  J t        j                  | j                  j                         t        t                     | _
        | j                  j                         \  | _        | _        | _        }}}}| j                  dkD  | _        |r|| j                   d<   |r|| j                   d<   |dk7  s|rt#        j$                         }|r<|j'                  |       |j)                  t*        j,                  j.                  d      }nd}||k7  r-||t*        j,                  j.                  <   |j1                         }|r|| j                   d<   | j3                  d       y )	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fpAvifDecoderreadr)   _decoderget_info_sizen_frames_modeis_animatedinfor   Exifloadgetr   BaseOrientationtobytesseek)selfmsgiccr0   exif_orientationr/   	exif_dataoriginal_orientations           r   _openzAvifImageFile._openF   se   UCc""&(1N1N2
 *CS/!ww"""))GGLLN$&
 MM""$ 	P
DM4:sD:JC  ==1,'*DIIm$"DIIeq D

It$'0}}X]]5N5NPQ'R$'($#777G	(--334 ((* $DIIf		!r   c                    | j                  |      sy || _        t        j                  dd| j                  z   d| j
                        g| _        y )Nraw)r   r   r   )_seek_check_AvifImageFile__framer	   _Tilesizemodetile)rF   frames     r   rE   zAvifImageFile.seekq   sB    & __UFTYY,>499MN	r   c                   | j                   r| j                  j                  | j                        \  }}}}t	        d||z  z        | j
                  d<   t	        d||z  z        | j
                  d<   | j                  r&| j                  r| j                  j                          t        |      | _        t        | -         S )Ni  	timestampduration)rT   r8   	get_framerP   roundr>   r5   _exclusive_fpcloser   superr@   )rF   data	timescalepts_in_timescalesduration_in_timescales	__class__s        r   r@   zAvifImageFile.loady   s    99 ''5 GD).0F &+43Dy3P+Q%RDIIk"$)$2H92T*U$VDIIj!ww4--dmDGw|~r   c                     y Nr(   )rF   poss     r   	load_seekzAvifImageFile.load_seek   s    r   c                    | j                   S rd   )rP   )rF   s    r   tellzAvifImageFile.tell   s    ||r   )returnNone)rU   intri   rj   )ri   zImage.core.PixelAccess | None)re   rk   ri   rj   ri   rk   )__name__
__module____qualname__formatformat_descriptionrP   rL   rE   r@   rf   rh   __classcell__)rb   s   @r   r+   r+   A   s.    F%G)VOr   r+   c                "    t        | ||d       y )NT)save_all)_save)imr5   filenames      r   	_save_allrx      s    	"b(T*r   c                	  # | j                   j                         }|rt        |j                  dg             }ng }h d#t	        #fd| g|z   D              }|j                  dd      }t        |t              r
|dk  s|dkD  rd}t        |      |j                  d	d      }	|j                  d
|rdnd      }
|j                  dd      }|j                  dt                     }|j                  dd      }|dk7  r"t        j                  |      sd}t        |      |j                  dd      }|j                  dd      }|j                  dd      }t        |j                  dd            }t        |j                  d||cxk(  xr dk(  nc             }|j                  d| j                  j                  d            }d}|j                  d      x}rt        |t        j                        r|}n%t        j                         }|j                  |       t         j"                  j$                  |v r>|j'                  t         j"                  j$                        }|r|j)                         nd}n*t        |t        j                        r|j)                         }|j                  d      }t        |t*              r|j-                  d      }|j                  d       }|Mt        |t.              r|j1                         }	 t3        |      }t5        d! |D              }|rd#}t        |      t        j8                  | j:                  |
||||||||||xs d|xs d||xs d|      }d}d}| j=                         }| xr t?        | d$d       }	 | g|z   D ]  }tA        jB                  |      D ]  } | jD                  }!|jD                  d%vr3|jF                  rd&}!n|jD                  #v rd'}!nd(}!| jI                  |!      } t        |	t        t2        f      r|	|   }n|	}|jK                  | j)                  d)|!      || j:                  |!|       |dz  }|r   	 | jM                  |       |jO                         }"|"d*}tQ        |      |jS                  |"       y # t6        $ r d"}Y w xY w# | jM                  |       w xY w)+Nappend_images>   I;16I;16BI;16LI;16N1FILc              3  n   K   | ],  }t        j                  |      D ]  }|j                  v   . y wrd   )r
   IteratorrS   ).0imsrU   grayscale_modess      r   	<genexpr>z_save.<locals>.<genexpr>   sB      "++C0  	

o%%s   25qualityK   r   d   zInvalid quality settingrX   subsamplingz4:0:0z4:2:0speed   max_threadscodecr   zInvalid saving codecrangefull	tile_rows	tile_colsalpha_premultipliedF
autotilingr.   r   r0   r   r/   zutf-8advancedc              3  ^   K   | ]%  }t        |t               xs t        |      d k7   ' yw)   N)
isinstancetupler&   )r   vs     r   r   z_save.<locals>.<genexpr>   s*     TajE22Ac!fkATs   +-Tzcadvanced codec options must be a dict of key-value string pairs or a series of key-value two-tuplesr=   >   r   RGBRGBAr   r   r   rN   z1cannot write file as AVIF (encoder returned None))*encoderinfocopylistrA   allr   rk   r4   r)   r   encoder_codec_availableboolr>   r   r?   r@   r   rB   rC   poprD   strencodedictitemsr   any	TypeErrorAvifEncoderrR   rh   getattrr
   r   rS   has_transparency_dataconvertaddrE   finishOSErrorwrite)$rv   r5   rw   rt   r>   rz   	grayscaler   rG   rX   r   r   r   r   range_tile_rows_log2tile_cols_log2r   r   r.   rI   r0   rJ   r/   r   invalidenc	frame_idxframe_durationcur_idxis_single_framer   rU   rawmoder^   r   s$                                      @r   ru   ru      sq    >> DTXXor:;MO 4-' I hhy"%Ggs#w{gm'oxx
A&H((=Y'GLKHHWa E((=*B*DEKHHWf%Eu<<UC$oXXgv&FXXk1-NXXk1-Ntxx(=uEFdhh|^~-RQR-RSTJ((="''++m*DEKxxtdEJJ'I

INN4 ==$$	1(}}X]]-F-FG*39$$&Dejj)$$&D
((5/C#sjj!xx
#Hh%~~'H	UXH T8TTG<  S/! 


s
s!C( INggiG''QM50Q,QO$4-'  	C&//4 **88#7700"(_4"%"'!MM'2E hu6%-i%8N%-N MM%1"JJ# Q	? 	F 	 ::<D|AclHHTNa  	G	P 	s%   R CR/ R/ R,+R,/Sz.avifz.avifsz
image/avif)r   r   ri   z
str | None)r   bytesri   z
bool | strrl   )rv   Image.Imager5   	IO[bytes]rw   str | bytesri   rj   )F)
rv   r   r5   r   rw   r   rt   r   ri   rj   )
__future__r   r%   ior   typingr    r   r   r	   r
   r   r   ImportErrorr2   r#   r   r    r)   r+   rx   ru   register_openrp   register_saveregister_save_allregister_extensionsregister_mimer(   r   r   <module>r      s6   " 	   7 7I   4#KI'' K\+
 MRLL"L.9LEIL	L^   M((- AE,,e4EM00)<Em22Wh4GHE,,l;	 m  Is   C< <DD