B
    1\{(                 @   s  d dl Z ddlmZmZmZ ddlmZ d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dddddddddddddddddddddZx4d D ],Zd!d"e fed#e < d!d"e fed$e < qW x<d%D ]4Zd&e d&e fed#e < d&e d&e fed$e < qW x6d'D ].Zd(d&e fed#e < d(d&e fed$e < q W x(ed)d*D ]Zd!d"e fed$e < q^W e d+Zd,d- ZG d.d/ d/ejZd0d1dd2d3d4d5d6d7d8ddddd9d:Zd;d< Zeeje eeje eejd= dS )>    N   )Image	ImageFileImagePalette)i8z0.7CommentZDatezDigitalization equipmentzFile size (no of images)ZLutNamezScale (x,y)zImage size (x*y)z
Image type)1r	   )Lr
   )RGBzRGB;L)r   ZRLB)PzP;2)r   zP;4)r   r   )IzI;32)FzF;32)r   zRGB;T)r   zRYB;T)LAzLA;L)RGBAzRGBA;L)RGBXzRGBX;L)CMYKzCMYK;L)YCbCrzYCbCr;L)z	0 1 imagez	L 1 imagezGreyscale imagezGrayscale imagez	RGB imagez	RLB imagez	RYB imagezB1 imagezB2 imagezB4 imagez
X 24 imagezL 32 S imagezL 32 F imagez
RGB3 imagez
RYB3 imagezLA imagez
RGBA imagez
RGBX imagez
CMYK imagez	YCC image)8Z8S16Z16SZ32Z32Fr   zF;%sz
L %s imagez
L*%s image)r   Z16LZ16BzI;%s)Z32Sr      !   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$c             C   s&   yt | S  tk
r    t| S X d S )N)int
ValueErrorfloat)s r   0lib/python3.7/site-packages/PIL/ImImagePlugin.pynumberb   s    r   c               @   sP   e Zd ZdZdZdZdd Zedd Zedd	 Z	d
d Z
dd Zdd ZdS )ImImageFileZIMzIFUNC Image MemoryFc             C   s  d| j dkrtd| j d d}d| jt< d| jt< d| jt< d| _x| j d}|dkrfqP|rz|d	ksz|d
kr|P || j 	  }t
|dkrtd|dd  dkr|d d }n|dd  dkr|d d }yt|}W n  tjk
r   tdY nX |r|dd\}}|dd}|dd}|tttgkr~|dd}ttt|d}t
|dkr|d }n"|tkr|tkrt| \}| _|tkr|| jkr| j| | n|g| j|< n
|| j|< |tkr|d7 }qPtd|dd qPW |std| jt | _| jt | _x*|r\|dd d
kr\| j d}q4W |sltdt| jkr| j d}d}d}x^tdD ]R}	||	 ||	d    kr||	d  krn nt||	 |	krd}nd}qW | jdks| jdkrl|r*|sjdd |d d D | _n@| jdkrDd | _| _n| jdkr\d | _| _t !d|| _"n(| jd kr|r|sd!d |D | _d| _#| j $  | _%}
| j | _&| jd d d"kr"yDt'| jdd  }|d#krd$d%| j( |
|d&d'ddffg| _)d S W n t*k
r    Y nX | jd(kr| j(d | j(d  }d)d%| j( |
d*fd)d%| j( |
| d+fd)d%| j( |
d|  d,fg| _)nd)d%| j( |
| jddffg| _)d S )-N   
d   znot an IM filer   r
   )i   i   r             s   
r   zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      i   r   c             S   s   g | ]}t |qS r   )r   ).0cr   r   r   
<listcomp>   s    z%ImImageFile._open.<locals>.<listcomp>r   PAzRGB;Lr   c             S   s   g | ]}t |qS r   )r   )r,   r-   r   r   r   r.      s    zF;)          bit)r   r   r0      )zRGB;TzRYB;T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mapr   OPENCOMMENTappendTAGSZ_sizemodeLUTranger   Zlutr   r5   paletteframetell_ImImageFile__offset_ImImageFile__fpr   sizetiler   )selfnr   mkvrT   Z	greyscaleZlinearioffsbitsrY   r   r   r   _openr   s    







0

 zImImageFile._openc             C   s
   | j t S )N)r=   r@   )r[   r   r   r   n_frames  s    zImImageFile.n_framesc             C   s   | j t dkS )Nr   )r=   r@   )r[   r   r   r   is_animated  s    zImImageFile.is_animatedc             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   r0   r      r5   )r   r   r&   )
Z_seek_checkrU   rQ   rC   rY   rW   rX   r9   rA   rZ   )r[   rU   rb   rY   ra   r   r   r   r<     s    

 zImImageFile.seekc             C   s   | j S )N)rU   )r[   r   r   r   rV   "  s    zImImageFile.tellc             C   sB   z4y| j | jkr| j   W n tk
r0   Y nX W d d | _ X d S )N)rX   r9   closeAttributeError)r[   r   r   r   
_close__fp%  s    
zImImageFile._close__fpN)__name__
__module____qualname__formatZformat_descriptionZ!_close_exclusive_fp_after_loadingrc   propertyrd   re   r<   rV   ri   r   r   r   r   r   l   s    r   )z0 1r	   )	Greyscaler
   )ro   r   )r   zPA;L)zL 32SzI;32S)zL 16zI;16)zL 16LzI;16L)zL 16BzI;16B)zL 32FzF;32F)ZYCCzYCbCr;L)r	   r
   r   r   r/   r   zI;16zI;16LzI;16Br   r   r   r   r   r   c          
   C   s  yt | j \}}W n" tk
r4   td| j Y nX | jdd}|d| d |rp|d| d |d| j d |d| d | jd	kr|d
 |dd|	   d  | jd	kr|| j
dd t| |dd| j d|ddffg d S )NzCannot save %s images as IMframesr   zImage type: %s image
r*   z
Name: %s
zImage size (x*y): %d*%d
zFile size (no of images): %d
r   s   Lut: 1
r#   i  r$   r   zRGB;Lr5   )r   r   r   r&   )SAVErQ   KeyErrorr   ZencoderinfogetwriteencoderY   rV   imZ
getpaletter   _save)rv   r9   filenameZ
image_typerA   rp   r   r   r   rw   G  s     


rw   z.im)rF    r   r   r   Z_binaryr   __version__rN   ZDATEZ	EQUIPMENTr@   rR   NAMErJ   r?   r>   rP   rM   r`   rS   compilerD   r   r   rq   rw   Zregister_openrm   Zregister_saveZregister_extensionr   r   r   r   <module>   s   




 J