o
    fp+                     @  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)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   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)88S1616S3232Fr   F;zL z imagezL*)r    16L16BzI;)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*    r0   J/home/ubuntu/webapp/venv/lib/python3.10/site-packages/PIL/ImImagePlugin.pynumberk   s
   
r2   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 )ImImageFile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   )   r8   r   T          s   
r(   zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r8   )r   r   r   PA)r   r   r   )r   rC   rC   r   r   r   r$   )          bitr   r   rD      )r   r   raw)Gr   r=   )Rr   r=   )Br   r=   ),fpreadSyntaxErrorseekinfoMODESIZEFRAMESrawmodereadlinelensplitmatchreerrorgroupdecodeSCALEr>   tuplemapr2   OPENCOMMENTappendTAGS_size_modeLUTrangemodelistlutr   rJ   paletteframetell_ImImageFile__offset_fpr.   sizetiler/   )selfmsgnr*   mekvrm   	greyscalelinearioffsbitsrr   r0   r0   r1   _open{   s   





>0

 
"zImImageFile._openr.   c                 C  s
   | j t S r-   rR   rU   rt   r0   r0   r1   n_frames  s   
zImImageFile.n_framesboolc                 C  s   | j t dkS )Nr   r   r   r0   r0   r1   is_animated  s   zImImageFile.is_animatedrn   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   rD   r      rJ   rH   r=   )
_seek_checkrn   rj   rX   rr   rp   rq   rN   rV   rs   )rt   rn   r   rr   r~   r0   r0   r1   rQ     s   

 "zImImageFile.seekc                 C  s   | j S r-   )rn   r   r0   r0   r1   ro   ,  s   zImImageFile.tellN)r+   r5   )r+   r.   )r+   r   )rn   r.   r+   r5   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingr   propertyr   r   rQ   ro   r0   r0   r0   r1   r3   v   s    
 
r3   )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   )YCCr   )r   r   r   r   rC   r   r   r   r   r   r   r   r   r   r   imImage.ImagerN   	IO[bytes]filenamestr | bytesr5   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
rA    \   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   rC   s   Lut: 1
r:   i  r;   r   r   rI       rB   rJ   rH   r   r=   )SAVErj   KeyErrorr/   encoderinfogetwriteencode
isinstancebytesr^   ospathsplitextbasenamejoinrX   rr   ro   r   
getpaletteri   r   _save)r   rN   r   
image_typerV   rx   ru   r   nameext
im_palettecolorsrm   r}   r0   r0   r1   r   I  s:   






(r   z.im)r*   r   r+   r,   )r   r   rN   r   r   r   r+   r5   )#
__future__r   r   r[   typingr   r   r   r   r   r   rc   DATE	EQUIPMENTrU   rh   NAMEr_   rT   rS   re   rb   r}   ri   jcompilerY   r2   r3   r   r   register_openr   register_saveregister_extensionr0   r0   r0   r1   <module>   s   	
 "

 B
*