3

Z'                 @   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dNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dad'Zx6dbD ].Zdd.e fed/e < dd.e fed0e <  qW x>dcD ]6Zd3e d3e fed/e < d3e d3e fed0e <  qW x6ddD ].Zdd3e fed/e < dd3e fed0e < q$W x(ed5d6D ]Zdd.e fed0e < qbW e jd7Zd8d9 ZG d:d; d;ejZdedfdgdhdidjdkdldmdndodpdqdrdsdJZdKdL Zejeje ejeje ejejdM dS )t    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1LRGBRGB;LRLBPP;2P;4II;32FF;32RGB;TRYB;TLALA;LRGBARGBA;LRGBXRGBX;LCMYKCMYK;LYCbCr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88S1616S3232FzF;%sz
L %s imagez
L*%s image16L16BzI;%s32S   !   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 r0   3/usr/lib/python3/dist-packages/PIL/ImImagePlugin.pynumberb   s    r2   c               @   sH   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S )ImImageFileZIMzIFUNC Image MemoryFc             C   s  d| j jdkrtd| j jd d}d| jt< d+| jt< d| jt< d| _x| j jd}|dkrfqP| s||d	ks||d
kr~P || j j	  }t
|dkrtd|d,d  dkr|d d- }n|d.d  dkr|d d/ }ytj|}W n. tjk
r } ztdW Y d d }~X nX |r|jdd\}}|jdd}|jdd}|tttgkr|jdd}ttt|jd}t
|dkr|d }n"|tkr|tkrt| \}| _|tkr|| jkr| j| j| n|g| j|< n
|| j|< |tkr|d7 }qPtd|jdd qPW |s*td| jt | _| jt | _x*|rl|dd d
krl| j jd}qDW |s|tdt| jkr| j jd}d}d}x^tdD ]R}	||	 ||	d    ko||	d  kn  rt||	 |	krd}nd}qW | jdks| jdkr||r:|szdd |d d D | _n@| jdkrTd | _| _n| jdkrld | _| _t j!d|| _"n,| jdkr| s| rdd |D | _d| _#| j j$  | _%}
| j | _&| jd d dkr6yDt'| jdd  }|d0krd#d1| j |
|d d$dd2ffg| _(d S W n t)k
r4   Y nX | jd3kr| jd | jd  }d'd4| j |
d6fd'd7| j |
| d9f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
      r             r*   s   
zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r   c             S   s   g | ]}t |qS r0   )r   ).0cr0   r0   r1   
<listcomp>   s    z%ImImageFile._open.<locals>.<listcomp>r   PAzRGB;Lr   c             S   s   g | ]}t |qS r0   )r   )r?   r@   r0   r0   r1   rA      s    zF;          bit   RGB;TRYB;TrawGRB)r6   r6   rN   rO   )rC   rD   rE   )r   r   rO   )rH   rI   )r   r   rO   )rK   r   rO   )r   r   rO   )rL   r   rO   )r   r   rO   )rM   r   rO   )r   r   rO   )*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ranger   Zlutr   rJ   paletteframetell_ImImageFile__offset_ImImageFile__fpr,   tiler-   )selfnr/   mvkrl   Z	greyscaleZlinearioffsbitsrh   r0   r0   r1   _openr   s    







0

 zImImageFile._openc             C   s
   | j t S )N)rT   rW   )rr   r0   r0   r1   n_frames  s    zImImageFile.n_framesc             C   s   | j t dkS )Nr   )rT   rW   )rr   r0   r0   r1   is_animated  s    zImImageFile.is_animatedc             C   s   | j |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   rC   r      rJ   )r   r   rO   )
Z_seek_checkrm   ri   rZ   rh   ro   rp   rP   rX   rq   )rr   rm   ry   rh   rx   r0   r0   r1   rS     s    

 zImImageFile.seekc             C   s   | j S )N)rm   )rr   r0   r0   r1   rn   "  s    zImImageFile.tellN)__name__
__module____qualname__formatZformat_descriptionZ!_close_exclusive_fp_after_loadingrz   propertyr{   r|   rS   rn   r0   r0   r0   r1   r3   l   s    r3   0 1	GreyscalePA;LL 32SI;32SL 16I;16L 16LI;16LL 16BI;16BL 32FF;32FYCC)r	   r
   r   r   rB   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jdd}|jd| jd |rp|jd| jd |jd| j jd |jd| jd | jd	kr|jd
 |jdd|j	   d  | jd	kr|j| j
jdd tj| |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
r8   i  r9   r   zRGB;LrJ   r   )r   r   rO   )SAVEri   KeyErrorr-   Zencoderinfogetwriteencoderh   rn   imZ
getpaletter   _save)r   rP   filenameZ
image_typerX   r   r0   r0   r1   r   >  s     


r   z.im)r	   r	   )r	   r	   )r
   r
   )r
   r
   )r   r   )r   r   )r   r   )r	   r	   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r    )r!   r"   r#   r$   r%   r&   )r#   r'   r(   )r)   )r   r	   )r   r
   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r    )r]    r   r   r   Z_binaryr   __version__re   DATEZ	EQUIPMENTrW   rj   NAMEra   rV   rU   rg   rd   rw   rk   compiler[   r2   r3   r   r   Zregister_openr   Zregister_saveZregister_extensionr0   r0   r0   r1   <module>   s   




 A