CoolFace
Apppublic

Aluode/PerceptionLabPortable

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
PngImagePlugin.cpython-310.pyc351 linesDownload Raw Back to __pycache__
1o

2��Yi%��@s�ddlmZddlZddlZddlZddlZddlZddlZddlm	Z	ddl3mZddlm
Z
mZmZddlmZmZmZmZmZddlmZdd	lmZdd4lmZddlmZddlmZdd
l m!Z!ddl"m#Z#dZ$e$r�ddl%m&Z&ddlm'Z'm(Z(ddlm)Z)e�*e+�Z,e�-d�j.Z/dZ0dddddddddddd d!d"d#d$�Z1e�-d%�Z2ej3Z4	d&e4Z5	Gd'd(�d(e	�Z6Gd)d*�d*e	�Z7dd.d/�Z8d�d�d3d4�Z9Gd5d6�d6�Z:Gd7d8�d8e;�Z<Gd9d:�d:�Z=Gd;d<�d<e�Z>Gd=d>�d>e:�Z?d�dAdB�Z@GdCdD�dDej�ZAdEdFdGdHdIdJdKdKdKdLdMdNdOdPdQdR�ZBd�dWdX�ZCGdYdZ�dZ�ZDGd[d\�d\�ZEd�dadb�ZFGdcdd�dde�ZGd�dndo�ZHd�drds�ZIeCdfd�dudv�ZJd�dzd{�ZKe�LeAjMeAe@�e�NeAjMeJ�e�OeAjMeI�e�PeAjMd|d}g�e�QeAjMd~�dS)��)�annotationsN)�IntEnum)�Fraction)�IO�5NamedTuple�cast�)�Image�6ImageChops�	ImageFile�ImagePalette�
ImageSequence)�i16be)�i32be)�o8)�o16be)�o32be)�	deprecate)�
DeferredErrorF)�Callable)�Any�NoReturn)�_imagings\w\w\w\ws�PNG
78)�1r)�L�L;2)r�L;4)rr)�I;16�I;16B)�RGBr)rzRGB;16B)�P�P;1)r �P;2)r �P;4)r r )�LAr$)�RGBAzLA;16B)r%r%)r%zRGBA;16B))rr)�r)�r)�r)�r)r(r&)r)r&)r�)r&r*)r'r*)r(r*)r(r')r)r')r(�)r)r+s^�*�*$�@c@seZdZdZ	dZ	dZdS)�Disposalrrr&N)�__name__�9__module__�__qualname__�OP_NONE�
OP_BACKGROUND�OP_PREVIOUS�r4r4�|E:\DocsHouse\542 percep lab latest\PerceptionLab\PerceptionLab_Portable\python_embed\Lib\site-packages\PIL/PngImagePlugin.pyr-nsr-c@seZdZdZ	dZdS)�BlendrrN)r.r/r0�	OP_SOURCE�OP_OVERr4r4r4r5r6�s10r6�s�bytes�returncCs*t��}|�|t�}|jrd}t|��|S)Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)�zlib�
decompressobj�11decompress�MAX_TEXT_CHUNK�unconsumed_tail�12ValueError)r9ZdobjZ	plaintext�msgr4r4r5�_safe_zlib_decompress�srC�data�seed�intcCst�||�d@S)Nl��)r<�crc32)rDrEr4r4r5�_crc32��rHc@sreZdZd&dd�Zd'dd	�Zd(d13d�Zd)dd�Zd*dd�Zd+dd�Zd,dd�Z	d-dd�Z14d-dd�Zd.d/d#d$�Zd%S)0�ChunkStream�fp�	IO[bytes]r;�NonecCs||_g|_dS�N)rK�queue��selfrKr4r4r5�__init__��15zChunkStream.__init__�tuple[bytes, int, int]cCs�d}|jdus	J�|jr|j��\}}}|j�|�n|j�d�}|dd�}|j��}t|�}t|�sCtj	sCdt16|��d�}t|��|||fS)z.Fetch a new chunk. Returns header information.Nr(r'zbroken PNG file (chunk �))rKrO�pop�seek�read�tell�i32�is_cidr�LOAD_TRUNCATED_IMAGES�repr�SyntaxError)rQ�cid�pos�lengthr9rBr4r4r5rX�s1718zChunkStream.readcCs|SrNr4�rQr4r4r5�	__enter__�szChunkStream.__enter__�args�objectcGs|��dSrN)�close)rQrdr4r4r5�__exit__�szChunkStream.__exit__cCsd|_|_dSrN)rOrKrbr4r4r5rf�rIzChunkStream.closer_r:r`rFracCs$|jdusJ�|j�|||f�dSrN)rO�append�rQr_r`rar4r4r5�push�szChunkStream.pushcCs,t�d|||�t|d|�d����||�S)z"Call the appropriate chunk handlerzSTREAM %r %s %sZchunk_�ascii)�logger�debug�getattr�decoderir4r4r5�call�szChunkStream.callrDc19Cs�tjr|dd?d@r|�||�dS|jdusJ�z"t|t|��}t|j�d��}||kr:dt|��d�}t|��WdSt	j20yV}z
dt|��d�}t|�|�d}~ww)	zRead and verify checksumr�rNr'z(broken PNG file (bad header checksum in rUz(broken PNG file (incomplete checksum in )rr\�crc_skiprKrHrZrXr]r^�struct�error)rQr_rDZcrc1Zcrc2rB�er4r4r5�crc�s �21��zChunkStream.crccCs|jdusJ�|j�d�dS)z
Read checksumNr')rKrX)rQr_rDr4r4r5rr�szChunkStream.crc_skip�IEND�endchunk�list[bytes]c22Cs�g}|jdus	J�	z	|��\}}}Wntjy'}zd}t|�|�d}~ww||kr/	|S|�|t�|j|��|�|�q23)NTztruncated PNG file)	rKrXrsrt�OSErrorrvr�24_safe_readrh)rQrxZcidsr_r`rarurBr4r4r5�verify�s 25���26�zChunkStream.verifyN�rKrLr;rM)r;rT)r;rJ)rdrer;rM�r;rM)r_r:r`rFrarFr;rM)r_r:r`rFrarFr;r:)r_r:rDr:r;rM)rw)rxr:r;ry)
r.r/r0rRrXrcrgrfrjrprvrrr|r4r4r4r5rJ�s272829303132333435rJc@s4eZdZUdZded<ded<e	dd
d36d��ZdS)�iTXtzq37    Subclass of string to allow iTXt chunks to look like strings while38    keeping their extra information39 40    zstr | bytes | None�lang�tkeyN�text�str�41str | Noner;cCst�||�}||_||_|S)z�42        :param cls: the class to use when creating the instance43        :param text: value for this key44        :param lang: language code45        :param tkey: UTF-8 version of the key name46        )r��__new__r�r�)�clsr�r�r�rQr4r4r5r�47sziTXt.__new__)NN)r�r�r�r�r�r�r;r)r.r/r0�__doc__�__annotations__�staticmethodr�r4r4r4r5rs48�rc@sFeZdZdZddd�Zdddd
�Z			dddd�Z	dd dd�ZdS)!�PngInfoz<49    PNG chunk container (for use with save(pnginfo=))50 51    r;rMcCs52g|_dSrN��chunksrbr4r4r5rR!�53zPngInfo.__init__Fr_r:rD�54after_idat�boolcCs|j�|||f�dS)a"Appends an arbitrary chunk. Use with caution.55 56        :param cid: a byte string, 4 bytes long.57        :param data: a byte string of the encoded data58        :param after_idat: for use with private chunks. Whether the chunk59                           should be written after IDAT60 61        N)r�rh)rQr_rDr�r4r4r5�add$s62zPngInfo.add��key�str | bytes�valuer�r��zipcCs�t|t�s|�dd�}t|t�s|�dd�}t|t�s!|�dd�}t|t�s,|�dd�}|rE|�d|d|d|dt�|��dS|�d|d|d|d|�dS)	z�Appends an iTXt chunk.63 64        :param key: latin-1 encodable text key name65        :param value: value for this key66        :param lang: language code67        :param tkey: UTF-8 version of the key name68        :param zip: compression flag69 70        �latin-1�strict�utf-8�iTXts�sN)�71isinstancer:�encoder�r<�compress)rQr�r�r�r�r�r4r4r5�add_itxt0s72737475 �(zPngInfo.add_itxt�str | bytes | iTXtcCs�t|t�r"|j|||jdur|jnd|jdur|j|d�Sd|d�St|t�sAz|�dd�}Wnty@|j|||d�YSwt|t�sL|�dd�}|r]|�d|dt	�76|��dS|�d|d	|�dS)77z�Appends a text chunk.78 79        :param key: latin-1 encodable text key name80        :param value: value for this key, text or an81           :py:class:`PIL.PngImagePlugin.iTXt` instance82        :param zip: compression flag83 84        N�)r�r�r��zTXt��tEXtr�)r�rr�r�r�r:r��UnicodeErrorr�r<r�)rQr�r�r�r4r4r5�add_textSs,85��86	�87zPngInfo.add_textNr~�F)r_r:rDr:r�r�r;rM)r�r�F)r�r�r�r�r�r�r�r�r�r�r;rM)r�r�r�r�r�r�r;rM)r.r/r0r�rRr�r�r�r4r4r4r5r�s88�$�r�c@�&eZdZUded<ded<ded<dS)�_RewindStatez dict[str | tuple[int, int], Any]�infozlist[ImageFile._Tile]�tilez89int | None�seq_numN�r.r/r0r�r4r4r4r5r�{�90r�cs�eZdZd5�fdd�Zd6d	d91�Zd7dd�Zd7d
d�Zd8dd�Zd8dd�Zd9dd�Z	d9dd�Z92d8dd�Zd8dd�Zd8dd �Z
d8d!d"�Zd8d#d$�Zd8d%d&�Zd8d'd(�Zd8d)d*�Zd8d+d,�Zd8d-d.�Zd8d/d0�Zd8d1d2�Zd8d3d4�Z�ZS):�	PngStreamrKrLr;rMcsZt��|�i|_i|_d|_d|_g|_d|_d|_d|_	d|_93tigd�|_d|_
dS)N�rrr�r)�superrR�im_info�im_text�im_size�im_mode�im_tile�94im_palette�im_custom_mimetype�im_n_frames�_seq_numr��rewind_state�text_memoryrP��	__class__r4r5rR�s95zPngStream.__init__�chunklenrFcCs2|j|7_|jtkrd|j�d�}t|��dS)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)r��MAX_TEXT_MEMORYrA)rQr�rBr4r4r5�check_text_memory�s96���zPngStream.check_text_memorycCst|j��|j|j�|_dSrN)r�r��copyr�r�r�rbr4r4r5�save_rewind�s9798�zPngStream.save_rewindcCs&|jj��|_|jj|_|jj|_dSrN)r�r�r�r�r�r�r�r�rbr4r4r5�rewind�s99zPngStream.rewindr`rar:cCs�|jdusJ�t�|j|�}|�d�}t�d|d|��||d}t�d|�|dkr7d|�d�}t|��zt||dd��}WntyStj	rPd}n�Ynt100jy^d}Ynw||jd	<|S)101Nr�ziCCP profile name %rrzCompression method %sr�Unknown compression method z in iCCP chunkr&�icc_profile)
rKrr{�findrlrmr^rCrAr\r<rtr�)rQr`rar9�i�comp_methodrBr�r4r4r5�102chunk_iCCP�s*103��104zPngStream.chunk_iCCPcCs�|jdusJ�t�|j|�}|dkrtjr|Sd}t|��t|d�t|d�f|_zt|d|df\|_|_	Wn	t105yAYnw|drKd|jd	<|d106rUd}t|��|S)N�
zTruncated IHDR chunkrr'r(�	�r�	interlace�zunknown filter category)
rKrr{r\rArZr��_MODESr��107im_rawmode�	Exceptionr�r^�rQr`rar9rBr4r4r5�108chunk_IHDR�s& �109zPngStream.chunk_IHDRrcCsld|jvrt�d|jd||j�g}n|jdurd|jd<t�dd|j||j�g}||_||_d}t|��)N�bboxr�T�
default_imager�zimage data found)	r�r�_Tiler�r�r�r�Zim_idat�EOFError)rQr`rar�rBr4r4r5�110chunk_IDAT�s111112113zPngStream.chunk_IDATcCsd}t|��)Nzend of PNG image)r�)rQr`rarBr4r4r5�114chunk_IEND�szPngStream.chunk_IENDcCs4|jdusJ�t�|j|�}|jdkrd|f|_|S)Nr r)rKrr{r�r��rQr`rar9r4r4r5�115chunk_PLTE�s116117118zPngStream.chunk_PLTEcCs�|jdusJ�t�|j|�}|jdkr/t�|�r(|�d�}|dkr&||jd<|S||jd<|S|jdkrAt|�r:dnd|jd<|S|jdvrOt|�|jd<|S|jdkrdt|�t|d	�t|d119�f|jd<|S)Nr r�r�transparencyr��)rrrr&r')	rKrr{r��_simple_palette�matchr�r��i16)rQr`rar9r�r4r4r5�120chunk_tRNS�s&121122123124125�126�127�128� zPngStream.chunk_tRNScCs2|jdusJ�t�|j|�}t|�d|jd<|S)N�j�@�gamma)rKrr{rZr�r�r4r4r5�129chunk_gAMA	szPngStream.chunk_gAMAcCsT|jdusJ�t�|j|�}t�dt|�d�d�|�}tdd�|D��|jd<|S)N�>r'�Icss�|]}|dVqdS)r�Nr4)�.0�eltr4r4r5�	<genexpr>��z'PngStream.chunk_cHRM.<locals>.<genexpr>Zchromaticity)rKrr{rs�unpack�len�tupler�)rQr`rar9Zraw_valsr4r4r5�130chunk_cHRMs131zPngStream.chunk_cHRMcCsL|jdusJ�t�|j|�}|dkrtjr|Sd}t|��|d|jd<|S)NrzTruncated sRGB chunkrZsrgb)rKrr{r\rAr�r�r4r4r5�132chunk_sRGBszPngStream.chunk_sRGBc	Cs�|jdusJ�t�|j|�}|dkrtjr|Sd}t|��t|d�t|d�}}|d}|dkr?|d|df}||jd<|S|dkrJ||f|jd	<|S)133Nr�zTruncated pHYs chunkrr'r(r�134F%u�?�dpiZaspect)rKrr{r\rArZr�)	rQr`rar9rB�px�py�unitr�r4r4r5�135chunk_pHYs+s 136�zPngStream.chunk_pHYscCs�|jdusJ�t�|j|�}z137|�dd�\}}Wn
ty%|}d}Ynw|rK|�dd�}|�dd�}|dkr:|n||j|<||j|<|�t	|��|S)Nr�rr�r�r��replacesexif)138rKrr{�splitrAror�r�r�r�)rQr`rar9�k�v�k_str�v_strr4r4r5�139chunk_tEXt=s�140zPngStream.chunk_tEXtc141Cs|jdusJ�t�|j|�}z142|�dd�\}}Wn
ty%|}d}Ynw|r-|d}nd}|dkr=d|�d�}t|��z143t|dd��}WntyWtjrTd}n�Yntj	ybd}Ynw|r�|�144dd�}|�145dd	�}	|	|j|<|j|<|�
t|	��|S)146Nr�rr�rr�z in zTXt chunkr�r�r�)rKrr{r�rAr^rCr\r<rtror�r�r�r�)147rQr`rar9r�r�r�rBr�r�r4r4r5�148chunk_zTXtQs<�149��zPngStream.chunk_zTXtcCs�|jdusJ�t�|j|�}}z150|�dd�\}}Wnty%|YSwt|�dkr.|S|d|d|dd�}}}z|�dd�\}}	}151WntyT|YSw|dkr�|dkr~zt|152�}153Wntyrtjrq|YS�tj	y}|YSw|S|dkr�|154|j155d<z|�dd�}|�d	d�}|	�d	d�}
|156�d	d�}Wnty�|YSwt
|||
�|j157|<|j|<|�t|��|S)158Nr�rr&rsXML:com.adobe.xmpZxmpr�r�r�)rKrr{r�rAr�rCr\r<rtr�ror�rr�r�)rQr`ra�rr9r��cf�cmr��tkr�r�Zlang_strZtk_strr�r4r4r5�159chunk_iTXttsP� ��160�zPngStream.chunk_iTXtcCs.|jdusJ�t�|j|�}d||jd<|S)N�Exif�exif)rKrr{r�r�r4r4r5�161chunk_eXIf�szPngStream.chunk_eXIfcCs�|jdusJ�t�|j|�}|dkrtjr|Sd}t|��|jdur,d|_t�d�|St|�}|dks8|dkr?t�d�|S||_t|d�|j	d<d|_162|S)	Nr(z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr'�loopz163image/apng)rKrr{r\rAr��warnings�warnrZr�r�)rQr`rar9rB�n_framesr4r4r5�164chunk_acTL�s&165166167zPngStream.chunk_acTLcCsN|jdusJ�t�|j|�}|dkrtjr|Sd}t|��t|�}|jdur*|dks6|jdur<|j|dkr<d}t|��||_t|d�t|d�}}t|d�t|d	�}}	|j\}168}|||169ksf|	||krld170}t|��||	|||	|f|j	d<t171|d�t172|d
�}}
|
dkr�d}
t|�t|
�d|j	d<|d|j	d<|d|j	d<|S)N�z"APNG contains truncated fcTL chunkrr�#APNG contains frame sequence errorsr'r(r�r)zAPNG contains invalid framesr����d���duration��disposal��blend)rKrr{r\rArZr�r^r�r�r��float)rQr`rar9rB�seq�width�heightr�r�Zim_wZim_hZ	delay_numZ	delay_denr4r4r5�173chunk_fcTL�s6174zPngStream.chunk_fcTLcCs�|jdusJ�|dkrtjrt�|j|�}|Sd}t|��t�|jd�}t|�}|j|dkr5d}t|��||_|�|d|d�S)Nr'z"APNG contains truncated fDAT chunkrr)	rKrr\r{rArZr�r^r�)rQr`rar9rBrr4r4r5�175chunk_fdAT�szPngStream.chunk_fdATr})r�rFr;rMr~)r`rFrarFr;r:)r`rFrarFr;r)r.r/r0rRr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr176rr�
__classcell__r4r4r�r5r��s,177178	179180181182183
184185186187188 189 190191192193#194+195196r��prefixr�cCs197|�t�SrN)�198startswith�_MAGIC)rr4r4r5�_accept�r�r cs�eZdZdZdZd%dd�Zed&dd	��Zd%�fd199d�Zd'dd�Z	d(d)dd�Z200d*dd�Zd%dd�Zd+dd�Z
d%dd�Zd,d d!�Zd-�fd#d$�Z�ZS).�PngImageFileZPNGzPortable network graphicsr;rMc	Cs�|jdusJ�t|j�d��sd}t|��|j|_d|_g|_t|j�|_	|j��\}}}z201|j�	|||�}Wn0t202yAYn0tyht�
d|||�t�|j|�}|dd���rf|j�||f�Ynw|j�||�q&|jj|_|jj|_|jj|_d|_|jj|_|jj|_|jjp�d|_|j� dd	�|_!|jj"r�|jj"\}}t#�$||�|_%|d203kr�|d|_&n||_&|jjdur�d	|_'|j�(�|j&|_)|j�*�|_+|j!r�|jd7_|�,d�|jdk|_-dS)Nr(znot a PNG filerT�%r %s %s (unknown)rr&r�F�fdATr').rKr rXr^�_fp�_PngImageFile__frame�private_chunksr��pngrpr��AttributeErrorrlrmrr{�islowerrhrvr��_moder��_sizer�r��_textr�r�r�Zcustom_mimetyper�r	�getr�r�r�raw�palette�_PngImageFile__prepare_idatZ!_close_exclusive_fp_after_loadingr��_PngImageFile__rewind_idatrY�_PngImageFile__rewind�_seek�is_animated)rQrBr_r`rar9�rawmoderDr4r4r5�_open�s\���204205206207208209210zPngImageFile._open�dict[str, str | iTXt]cCsR|jdur|jr|j}|�|jd�|��|jr|�|�|jdus&J�|jS)Nr)r,r4r%rWr	�load)rQ�framer4r4r5r�>s211212zPngImageFile.textcs`|jdurd}t|��|j�|jddd�|jdusJ�|j��|j��t���dS)zVerify PNG fileNz)verify must be called directly after openrr&r()rK�RuntimeErrorrWr�r'r|rfr�)rQrBr�r4r5r|Ns213214215zPngImageFile.verifyr9rFcCs�|�|�sdS||jkr|�dd�|j}t|jd|d�D]!}z|�|�Wqty@}z|�|�d}t|�|�d}~wwdS)NrTrzno more images in APNG file)Z_seek_checkr%r3�ranger�rW)rQr9Z216last_frame�frurBr4r4r5rW^s217218219220���zPngImageFile.seekFr�r�c		Cs4|jdusJ�t|jt�r|jj�|d}|dkrb|r<|j�|j�|j��|j|_	d|_221|jj|_|jj
|_|j|_d|_d|_|j�dd�|_|j�d�|_|j�d�|_|j�d�}d|_n�||jdkrrd|��}t|��|��|jr�|j�|j|j�|j��|_|j|_|j	r�t�|j|j	�d|_	d}	|j�d222�z223|j��\}}}Wnt j!t"fy�Ynew|dkr�d}t#|��|d
kr�|r�d}t"|��d	}z224|j�$|||�Wn@t%y�Yn9t#�y|dkr�|d2258}|r�||_	Yn#t�|j|�Ynt&�yt'�(d|||�t�|j|�Ynwq�||_|jj
|_|j�d�|_|j�d�|_|j�d�}|j�sDd}t#|��|�rJ||_|jdu�r[|jt)j*k�r[t)j+|_d|_|jt)j*k�r||j�rz|j��|_|�,|j|j�|_dSdS|jt)j+k�r�t-j.�/|j0|j1�|_|�,|j|j�|_dSdS)Nrr�Frrr�rzcannot seek to frame Tr'rwzNo more images in APNG file�fcTLzAPNG missing frame datar#r"zimage not found in APNG frame)2r'r�r$r�exrWr2r�r1r0Z_imr�r�r�r�rK�_prev_im�disposer-r�Z226dispose_op�blend_opr%rAr8�im�paste�dispose_extentr�rr{rXrsrtr^r�rp�UnicodeDecodeErrorr(rlrmr-r3r2�_cropr	�core�fill�mode�size)	rQr9r�rDrBZframe_startr_r`rar4r4r5r3ms�227228229230���!231��zPngImageFile._seekcCs|jSrN)r%rbr4r4r5rY�szPngImageFile.tellcCs0|j�d�r|jd|_|j|_tj�|�dS)z"internal: prepare to read PNG filer�)rN)r�r-Z
decoderconfigr0�_PngImageFile__idatr�load_preparerbr4r4r5rL�szPngImageFile.load_prepare�232read_bytesr:cCs�|jdusJ�|jdusJ�|jdkrU|j�d�|j��\}}}|dvr/|j�|||�dS|dkrMz233|j�|||�Wn	tyFYnw|d|_n||_|jdks|dkr]|j}nt||j�}|j||_|j�|�S)zinternal: read more image dataNrr')�IDATsDDATr#r�r#)r'rKrKrXrjrpr��min)rQrMr_r`rar4r4r5�	load_read�s,234�235�zPngImageFile.load_readc	
Cst|jdusJ�|jdusJ�|jdkr|j�|j�	|j�d�z236|j��\}}}Wntjtfy7Yn�w|dkr=n�|dkrP|jrPd|_|j�	|||�noz237|j�238|||�WnctycYn\ty�|dkrq|d8}z	t
�|j|�Wnty�}zt
jr�WYd}~Yn3|�d}~wwYn)ty�t�d|||�t
�|j|�}|d	d239���r�|j�||df�Ynwq|jj|_|js�|j��d|_dS|j�r6|jtjk�r8|�|j|j �}|jj!dkr�d|j"vr�|�#d
|j"d�}n.|jj!dk�r"d|j"v�r"|j"d}t$|t%��r|�&|�nt$|t'��r"|�(|�|�)d
�}|j�*||j |�|j|_dSdSdS)z%internal: finished reading image dataNrTr'rwr=r#r"rr&rr�r%r )+r'rKrKrXrsrtr^r4r0rjrprEr�rr{rzr\r(rlrmr)r&rhr�r,rfr?rAr6r8rFrBrDrIr�Zconvert_transparentr�r:ZputpalettealphasrFZputpalettealpha�convertrC)	rQr_r`rarur9�updated�mask�tr4r4r5�load_endsz240�������241#242243244�245246247�zPngImageFile.load_end�dict[int, Any] | NonecCs6d|jvr	|��d|jvrd|jvrdS|����S)NrzRaw profile type exif)r�r8�getexifZ_get_merged_dictrbr4r4r5�_getexif?s248249zPngImageFile._getexif�250Image.Exifcsd|jvr	|��t���S)Nr)r�r8r�rWrbr�r4r5rWFs251252zPngImageFile.getexifr~)r;r7)r9rFr;rMr�)r9rFr�r�r;rM)r;rF)rMrFr;r:)r;rV)r;rY)r.r/r0�format�format_descriptionr6�propertyr�r|rWr3rYrLrPrUrXrWrr4r4r�r5r!�s253D254255d256257	258#259?r!)r�r�)�L;1r]r�)r�r�)r�r�)r�r�)r$rar`)r�r�)r!r]�)r"r_rc)r#r`rc)r rarc)rrar_)r%ra�)rr^rrrr$r�rrr!r"r#r rr%rKrLr_rMcGsJd�|�}|�tt|��|�|�|�t|t|��}|�t|��dS)z'Write a PNG chunk (including CRC field)r�N)�join�write�o32r�rH�rKr_rDZ	byte_datarvr4r4r5�putchunkds260261262ric@s eZdZddd�Zddd�Zd
S)�_idatrKrL�chunk�Callable[..., None]r;rMcCs||_||_dSrN)rKrk)rQrKrkr4r4r5rRrrSz_idat.__init__rDr:cCs|�|jd|�dS)NrN)rkrK�rQrDr4r4r5rfv�z_idat.writeN)rKrLrkrlr;rM�rDr:r;rM�r.r/r0rRrfr4r4r4r5rjos263rjc@s eZdZdd	d264�Zdd
d�ZdS)�_fdatrKrLrkrlr�rFr;rMcCs||_||_||_dSrN)rKrkr�)rQrKrkr�r4r4r5rR}s265z_fdat.__init__rDr:cCs*|�|jdt|j�|�|jd7_dS)Nr#r)rkrKrgr�rmr4r4r5rf�sz_fdat.writeN)rKrLrkrlr�rFr;rMrorpr4r4r4r5rqzs266rqrB�Image.Image�encoderinfo�dict[str, Any]cCs2|�dd�|�dd�|�dd�|�dd�f|_dS)N�optimizeFZcompress_level������
compress_type�267dictionaryr�)r-Z
encoderconfig)rBrsr4r4r5�_apply_encoderinfo�s268269270271272273�ryc@r�)�_FramerrrBz tuple[int, int, int, int] | Noner�rtrsNr�r4r4r4r5rz�r�rzrkrlrIr�r5r��Image.Image | None�
append_images�list[Image.Image]c#Cs�|j�d�}|j�d|j�dd��}|j�d|j�dtj��}	|j�d|j�dtj��}274|r4t�|�}nt�|g|�}g}d}
|D]�}t	�275|�D]�}|j|krT|��}n|�
|�}|j��}t|ttf�rl||
|d<n|dur|d|jvr||jd|d<t|	ttf�r�|	|
|d<t|276ttf�r�|277|
|d<|
d7}
|�r*|d}|j�d�}|j�d�}|tjkr�t|�dkr�tj}|tjkr�|j��}tj�d	|jd278�}|j}|r�|�|�}nd|j}|�||�n|tjkr�|dj}n|j}t�|�
d	�|�
d	��}|jd
d�}|�s)||�d�k�r)||�d�k�r)d|v�r)|jd|d7<qHnd}|�t |||��qHqAt|�dk�rF|�sF|djS||dt!t|��t!|��|�r�|j|k�r^|n|�
|�}t"||j�t#�$|t%t&t't(||��t#�)dd|jd|�g�d}t*|�D]�\}}|j}|j�s�d|j}n|j}|�|�}|j}|j}|�dd�}t+|d��,d�}|j-dk�r�d}t.|��|�d|	�} |�d|279�}!||dt!|�t!|d�t!|d�t!|d�t!|d�t/|j-�t/|j0�t1| �t1|!��|d7}t"||j�|dk�r%|�s%t#�$|t%t&t't(||��t#�)dd|jd|�g��q�t2|||�}"t#�$|t%t&t'|"�t#�)dd|jd|�g�|"j3}�q�dS)Nrrrrrrrvr&r%)rrrrr������F)Z280alpha_onlysacTLr�r���zcannot write durationr=)4rsr-r�r-r1r6r7�	itertools�chainr
�IteratorrIr�rQr��listr�r3r�r2rBr	rGrHrJr��croprCr281Zsubtract_moduloZgetbboxrhrzrgryr�_saverrr:rjr��	enumerater�limit_denominator�	numeratorrA�o16�denominatorrrqr�)#rBrKrkrIr5r�r|rrrrr�Z	im_framesZframe_count�im_seq�im_framers�previousZ
prev_disposalZ282prev_blendZbase_imr@r��deltaZ283default_imr�r9Z284frame_datarJZframe_duration�delayrBZframe_disposalZframe_blendZfdat_chunksr4r4r5�_write_multiple_frames�s�	285286287288289290291292��293��4294295��296297298299300�
��301r��filenamer�cCst|||dd�dS)NT)�save_all)r�)rBrKr�r4r4r5�	_save_all)rnr�r�c(302sB|rU|j�d|j�d��}t�}t��|j�dg�}t�|g|�D]}t�|�D]}	|�|	j	���|	j303�q(q!dD]}304|305|vrBnq:|��}306t�fdd�t
d�D��}n|j307}|j	}308|309}|310dkr�d|jvrqtd	|jd>d311�}
n|jr�ttt|j��d	�dd312�d	�}
nd313}
|
dkr�|
dkr�d	}n	|
d
kr�d}nd
}|d|��7}z	t|\}}}Wnty�}zd|314�d�}t|�|�d}~ww|dkr�tddd
d�|�t�||dt|d�t|d	�||ddd�	gd�}|j�d|j�d��}|�rd}|dt�|�}||d|�|�d�|j�d�}|�rhgd�}|jD]G}|dd�\}}||v�r<|�|�||||��q ||v�rI||||��q |d	d����rft|�dk�o\|d}|�sf||||��q |j	dk�r�|
d}|j� d �d|�}t|�|k�r�|d7}t|�|k�s�||d!|�|j�d"|j�d"d��}|�s�|dk�r|j	dk�r�|
} t!|t"��r�||d#|d| ��nztdtd$|��}d%|d}!||d#|!d| ��na|j	d&v�r�tdtd'|��}||d#t#|��nJ|j	d k�r
|\}"}#}$||d#t#|"�t#|#�t#|$��n.d"|jv�rd(}t|��n!|j	dk�r;|j�$�d)k�r;|j� d)d*�}!|
} ||d#|!d| ��|j�d+�}%|%�r`||d,tt%|%dd-d.��tt%|%d	d-d.��d/�|�r�d0d1g}|jD]}|dd�\}}||v�r�|�|�||||��qj|j�d2�}&|&�r�t!|&t&j'��r�|&�(d3�}&|&�)d4��r�|&d5d�}&||d6|&�|}'|�r�t*||||315|||�}'|'�r�t+|'|j�t,�-|'t.t/t"t0||��t,�1d7d8|'j316d|�g�|�r
|jD](}|dd�\}}|d	d����rt|�dk�o|d}|�r||||��q�||d9d:�t2|d;��r|�3�dSdS)<Nr�r|)r%rr c3s&�|]�t�fdd��D��VqdS)c3s�|]}|�VqdSrNr4)r��317frame_size�r�r4r5r�Fr�z"_save.<locals>.<genexpr>.<genexpr>N)�max)r���sizesr�r5r�Fs�$z_save.<locals>.<genexpr>r&r �bitsr�r*r)r'�;zcannot write mode z as PNGr�zSaving I mode images as PNGr�)�318stacklevelsIHDRrr�)scHRMscICPsgAMAssBIT�sRGBstIMEr�sICC Profiler�siCCPr�Zpnginfo)ssPLTr�r�r�rsPLTEr�stRNSr���)rrr�rrz%cannot use transparency for this moder%�Ar�spHYsr�g�?r]sbKGDshISTrr(rr+seXIfr�r�rwr��flush)4rsr-r��setr�r�r
r�r�rIrJrVr�r;rOr/r�r�Zgetdata�	_OUTMODES�KeyErrorrzrrfrrgr<r��remover�r)rBZ319getpaletter�r:r�ZgetpalettemoderFr	ZExif�tobytesrr�ryrr�rrrjr��hasattrr�)(rBrKr�rkr�r��modesr|r�r�rIrJZoutmode�colorsr�r5Z	bit_depth�320color_typerurBr�Zicc�namerDr�Zchunks_multiple_allowedZ321info_chunkr_r�Zpalette_byte_numberZ
palette_bytesr�Zalpha_bytes�alpha�red�green�bluer�rZ	single_imr4r�r5r�-s6	���322$323��324325326�327328329330331��332"��333334335�336��337��r��paramsr� list[tuple[bytes, bytes, bytes]]csJddlm}g�d�fd338d�}|�}z||_t||d|�W|`�S|`w)z4Return a list of PNG chunks representing this image.r)�BytesIOrKrLr_r:rDr;rMcs0d�|�}tt|t|���}��|||f�dS)Nr�)rergrHrhrhr�r4r5rhs339zgetchunks.<locals>.appendr�N�rKrLr_r:rDr:r;rM)�ior�rsr�)rBr�r�rhrKr4r�r5�	getchunks�s�r�z.pngz.apngz	image/png)r9r:r;r:)r)rDr:rErFr;rF)rr:r;r�r�)rBrrrsrtr;rM)rBrrrKrLrkrlrIr�r5r�r�r{r|r}r;r{)rBrrrKrLr�r�r;rM)rBrrrKrLr�r�rkrlr�r�r;rM)rBrrr�rr;r�)R�340__future__rr��logging�rersrr<�enumr�	fractionsr�typingrrrr�r	r341rrr
�_binaryrr�rrZrrr�rrgZ342_deprecaterZ_utilr�
TYPE_CHECKING�collections.abcrrrr�	getLoggerr.rl�compiler�r[rr�r�Z	SAFEBLOCKr?r�r-r6rCrHrJr�rr�r�r�r r!r�rirjrqryrzr�r�r�r�Z
register_openrZZ
register_saveZregister_save_allZregister_extensionsZ
register_mimer4r4r4r5�<module>s� 343�344345	^`346o^�347348
	349350�351Q
Aluode/PerceptionLabPortable · CoolFace