o
    Zhp+                     @  sv  d dl mZ d dlZd dlZd dlmZmZ ddlmZm	Z	m
Z
 dZdZdZd	Zd
ZdZdZdZdZed ed ed ed ed ed ed ed ed i	Zi dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1Zd2D ]Zd3d4e fed5e d6< d3d4e fed7e d6< qd8D ]"Zd9e d9e fed5e d6< d9e d9e fed7e d6< qd:D ]Zd;d9e fed5e d6< d;d9e fed7e d6< qed<d=D ]Zd3d4e fed7e d6< qed>Zd\dCdDZG dEdF dFe	j	ZdGdHd*dId,dJdKdLdMdNdd-dOd/dPdQZd]dYdZZeej e e!ej e e"ej d[ dS )^    )annotationsN)IOAny   )Image	ImageFileImagePaletteCommentDatezDigitalization equipmentzFile size (no of images)ZLutNamezScale (x,y)zImage size (x*y)z
Image typez	0 1 image)1r   z	L 1 imagezGreyscale image)Lr   zGrayscale imagez	RGB image)RGBRGB;Lz	RLB image)r   ZRLBz	RYB imagezB1 imagezB2 image)PzP;2zB4 image)r   zP;4z
X 24 image)r   r   zL 32 S image)IzI;32zL 32 F image)FzF;32z
RGB3 image)r   RGB;Tz
RYB3 image)r   RYB;TzLA image)LAzLA;LzPA image)r   PA;L)RGBAzRGBA;L)r   RGBX;L)CMYKzCMYK;L)YCbCrYCbCr;L)z
RGBA imagez
RGBX imagez
CMYK imagez	YCC image)8Z8S16Z16SZ32Z32Fr   F;zL z imagezL*)r   Z16L16BzI;)Z32Sr      !   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$sr   returnfloatc                 C  s&   zt | W S  ty   t|  Y S w N)int
ValueErrorr$   )r"    r(   H/var/www/html/lang_env/lib/python3.10/site-packages/PIL/ImImagePlugin.pynumberk   s
   
r*   c                   @  sR   e Zd ZdZdZdZdddZedd	d
ZedddZ	dddZ
dddZdS )ImImageFileZIMzIFUNC Image MemoryFr#   Nonec              
   C  s  d| j dvrd}t|| j d d}d| jt< d| jt< d| jt< d| _	 | j d}|d	kr4q(|r>|d
ks>|dkr?n|| j 	  }t
|dkrRd}t||dd  dkra|d d }n|dd  dkro|d d }zt|}W n tjy } zd}t||d }~ww |r|dd\}}|dd}|dd}|tttfv r|dd}ttt|d}t
|dkr|d }n|tkr|tv rt| \}| _|tkr|| jv r| j| | n|g| j|< n|| j|< |tv r|d7 }nd|dd }t|q)|sd}t|| jt | _| jt | _|r:|d d dkr:| j d}|r:|d d dks(|sCd}t|t| jv r| j d}d}	d}
tdD ](}|| ||d    kro||d  kr|n n|| |krzd}
qWd}	qW| jdv r|	r|
st|d d | _ n2| jdv rd | _| _n| jdv rd| _d | _t!"d!|| _#n| jd"kr|	r|
st|| _ d| _$| j %  | _&}| j | _'| jd d d#krz#t(| jdd  }|d$vrd%d&| j) ||d'd(ddffg| _*W d S W n
 t+y   Y nw | jd)v rB| j)d | j)d  }d*d&| j) |d+fd*d&| j) || d,fd*d&| j) |d|  d-fg| _*d S d*d&| j) || jddffg| _*d S ).N   
d   znot an IM filer   r   )   r/   r   T          s   
r    zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r/   )r   r   r   PA)r   r   r   )r   r:   r:   r   r   r   r   )          bitr   r   r;      )r   r   raw)Gr   r4   )Rr   r4   )Br   r4   ),fpreadSyntaxErrorseekinfoMODESIZEFRAMESrawmodereadlinelensplitmatchreerrorgroupdecodeSCALEr5   tuplemapr*   OPENCOMMENTappendTAGS_size_modeLUTrangemodelistZlutr   rA   paletteframetell_ImImageFile__offset_fpr&   sizetiler'   )selfmsgnr"   mekvrc   Z	greyscaleZlinearioffsbitsrh   r(   r(   r)   _open{   s   





>0

 
"zImImageFile._openr&   c                 C  s
   | j t S r%   rI   rL   rj   r(   r(   r)   n_frames  s   
zImImageFile.n_framesboolc                 C  s   | j t dkS )Nr   ru   rv   r(   r(   r)   is_animated  s   zImImageFile.is_animatedrd   c                 C  s   |  |sd S || _| jdkrd}ndt| j }| jd | d d | jd  }| j||  }| j| _dd| j || jddffg| _	d S )	Nr   r   r;   r      rA   r?   r4   )
Z_seek_checkrd   ra   rO   rh   rf   rg   rE   rM   ri   )rj   rd   rs   rh   rr   r(   r(   r)   rH     s   

 "zImImageFile.seekc                 C  s   | j S r%   )rd   rv   r(   r(   r)   re   ,  s   zImImageFile.tellN)r#   r,   )r#   r&   )r#   rx   )rd   r&   r#   r,   )__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrt   propertyrw   ry   rH   re   r(   r(   r(   r)   r+   v   s    
 
r+   )z0 1r   )	Greyscaler   )r   r   )zL 32SzI;32S)zL 16I;16)zL 16LI;16L)zL 16BI;16B)zL 32FzF;32F)RGBXr   )ZYCCr   )r   r   r   r   r:   r   r   r   r   r   r   r   r   r   r   imImage.ImagerE   	IO[bytes]filenamestr | bytesr,   c              
   C  s  z	t | j \}}W n ty! } zd| j d}t||d }~ww | jdd}|d| dd |rht|t	rA|
d}tjtj|\}}	d|d d	t|	  |	g}|d
| dd |d| j d |d| dd | jdv r|d |dd|   d  | jdv r| jdd}
t|
d }d}tdD ]}||
|| ||d   7 }|dd|  7 }q|| t| |dd| j d|ddffg d S )NzCannot save z images as IMframesr   zImage type: z image
r8    \   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   r:   s   Lut: 1
r1   i  r2   r   r   r@       r9   rA   r?   r   r4   )SAVEra   KeyErrorr'   Zencoderinfogetwriteencode
isinstancebytesrU   ospathsplitextbasenamejoinrO   rh   re   r   Z
getpaletter`   r   _save)r   rE   r   Z
image_typerM   rn   rk   r   nameextZ
im_palettecolorsrc   rq   r(   r(   r)   r   I  s:   






(r   z.im)r"   r   r#   r$   )r   r   rE   r   r   r   r#   r,   )#
__future__r   r   rR   typingr   r   r   r   r   r   rZ   ZDATEZ	EQUIPMENTrL   r_   NAMErV   rK   rJ   r\   rY   rq   r`   jcompilerP   r*   r+   r   r   Zregister_openr~   Zregister_saveZregister_extensionr(   r(   r(   r)   <module>   s   	
 "

 B
*