
    e*                    :   d dl mZ d dlZd dl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.d/d0Zd1D ]  Zd2d3e fed4e d5<   d2d3e fed6e d5<     d7D ]$  Zd8e d8e fed4e d5<   d8e d8e fed6e d5<   & d9D ]  Zd:d8e fed4e d5<   d:d8e fed6e d5<      ed;d<      D ]  Zd2d3e fed6e d5<     ej*                  d=      Zd> Z G d? d@ej                        ZdAdBd)dCd+dDdEdFdGdHdd,d-d.dIdJZdK Z ej6                  ej8                  e        ej:                  ej8                  e        ej<                  ej8                  dL       y)M    )annotationsN   )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)RGBXz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]*$c                N    	 t        |       S # t        $ r t        |       cY S w xY wN)int
ValueErrorfloat)ss    3/usr/lib/python3/dist-packages/PIL/ImImagePlugin.pynumberr0   j   s(    1v Qxs   
 $$c                  J    e Zd ZdZdZdZd Zed        Zed        Z	d Z
d Zy	)
ImImageFileIMzIFUNC Image MemoryFc                
   d| j                   j                  d      vrd}t        |      | j                   j                  d       d}d| j                  t
        <   d| j                  t        <   d| j                  t        <   d| _        	 | j                   j                  d      }|dk(  r"|r
|d	k(  s|d
k(  rn|| j                   j                         z   }t        |      dkD  rd}t        |      |dd  dk(  r|d d }n|dd  dk(  r|d d }	 t        j                  |      }|r |j                  dd      \  }}|j!                  dd      }|j!                  dd      }|t        t"        t        fv rN|j%                  dd      }t'        t)        t*        |j                  d                  }t        |      dk(  r(|d   }n"|t
        k(  r|t,        v rt,        |   \  }| _        |t.        k(  r>|| j                  v r| j                  |   j1                  |       n |g| j                  |<   n|| j                  |<   |t2        v r&|dz  }n d|j!                  dd      z   }t        |      |sd}t        |      | j                  t           | _        | j                  t
           | _        |r.|d d d
k7  r&| j                   j                  d      }|r	|d d d
k7  r&|sd}t        |      t8        | j                  v r| j                   j                  d      }d}	d}
t;        d      D ]-  }||   ||dz      cxk(  r||dz      k(  rn n||   |k7  s)d}
,d}	/ | j<                  dv rm|	r|
st?        |d d       | _         nx| j<                  dv rdx| _        | _        n| j<                  dv rd| _        d| _        tC        jD                  d |      | _#        n#| j<                  d!k(  r|	r|
st?        |      | _         d| _$        | j                   jK                         x| _&        }| j                   | _'        | j                  d d d"k(  r=	 tQ        | j                  dd        }|d#vrd$d%| jR                  z   ||d&d'ddffg| _*        y 	 | j                  d(v rf| jR                  d   | jR                  d   z  }d)d%| jR                  z   |d*fd)d%| jR                  z   ||z   d+fd)d%| jR                  z   |d|z  z   d,fg| _*        y d)d%| jR                  z   || j                  ddffg| _*        y # t        j                  $ r}d}t        |      |d }~ww xY w# tV        $ r Y w xY w)-N   
d   znot an IM filer   r   )   r7   r             s   
r'   zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r7   )r   r   r   PA)r   r   r   )r   rB   rB   r   r   r   r#   )          bitr   r   rC      )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mapr0   OPENCOMMENTappendTAGS_size_modeLUTrangemodelistlutr   rI   paletteframetell_ImImageFile__offset_fpr+   sizetiler,   )selfmsgnr.   mekvrl   	greyscalelinearioffsbitsrq   s                  r/   _openzImImageFile._openz   s(    S))"Cc""Q 		$$		$		&QA EzU
a7l DGG$$&&A1v|&!#&&v crF235crF.KKN
 wwq!}1 HHY	2HHY	2 --		#s+Ac&!''#,78A1v{aD$Y19&*1gOAt| <DII~		!++A.()s		!#$DIIaL9FA 4ahhw	6RR!#&&y | "Cc"" YYt_
YYt_
 AbqEW$QA AbqEW$"Cc""$))ggll3'GIF3Z "1:S!1EWQW5EEqzQ!" !I" yy22!#'#6yyJ.477
T\l2%)
'-#/#3#3GW#EDLe# #G}DH
#ww||~-77<<t#4<<+,{*"'$)));TD!QPQSUCV!W XDI + <<-- 99Q<$))A,.D*D,?*D4KF*D1t8O\JDI  $))!3TDLL!R;PQRDIW 88 .&!#&A-.z  s*   T ::T: T7$T22T7:	UUc                (    | j                   t           S r*   rQ   rT   rs   s    r/   n_frameszImImageFile.n_frames  s    yy      c                .    | j                   t           dkD  S )Nr   r   r   s    r/   is_animatedzImImageFile.is_animated  s    yy 1$$r   c                l   | j                  |      sy || _        | j                  dk(  rd}ndt        | j                        z  }| j                  d   |z  dz   dz  | j                  d   z  }| j
                  ||z  z   }| j                  | _        dd| j                  z   || j                  ddffg| _	        y )	Nr   r   rC   r      rI   rG   r<   )
_seek_checkrm   ri   rW   rq   ro   rp   rM   rU   rr   )rs   rm   r~   rq   r}   s        r/   rP   zImImageFile.seek  s    &
99Ds499~%D1$q(Q.$))A,>}}ut|+((Vdii/a7LMN	r   c                    | j                   S r*   )rm   r   s    r/   rn   zImImageFile.tell+  s    zzr   N)__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingr   propertyr   r   rP   rn    r   r/   r2   r2   u   sN    F-(-%USn ! ! % %O$r   r2   )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)YCCr   )r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   c           
        	 t         | j                     \  }}| j                  j                  dd      }|j                  d| dj                  d             |rt        j                  j                  t        j                  j                  |            \  }}	dj                  |d d	t        |	      z
   |	g      }|j                  d
| dj                  d             |j                  d| j                  z  j                  d             |j                  d| dj                  d             | j                  dv r|j                  d       |j                  dd|j                         z
  z  dz          | j                  dv ri| j                   j#                  dd      }
t        |
      dz  }d}t%        d      D ]  }||
||z  ||dz   z   z  }|dd|z
  z  z  }  |j                  |       t'        j(                  | |dd| j                  z   d|ddffg       y # t        $ r!}d| j                   d}t        |      |d }~ww xY w)NzCannot save z images as IMframesr   zImage type: z image
r@    \   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   rB   s   Lut: 1
r9   i  r:   r   r   rH   r   rA   rI   rG   r   r<   )SAVEri   KeyErrorr,   encoderinfogetwriteencodeospathsplitextbasenamejoinrW   rq   rn   im
getpaletterh   r   _save)r   rM   filename
image_typerU   rw   rt   r   nameext
im_palettecolorsrl   r|   s                 r/   r   r   H  s   %"277m
G
 ^^!,FHH|J<z299'BC
 GG$$RWW%5%5h%?@	cww_rCH}-s34
6$t$++G45HH+bgg5==gFGHH)&6==gFG	ww+
HHWbggi(723	ww+UU%%eW5
ZA%q 	0Az&1*vQ/?@@Gw#,//G	0 	OOBeVbgg%5q7Ar:JKLM;  %RWWI]3o1$%s   H 	I$I  Iz.im)
__future__r   r   rZ   r   r   r   r   rb   DATE	EQUIPMENTrT   rg   NAMEr^   rS   rR   rd   ra   r|   rh   compilerX   r0   r2   r   r   register_openr   register_saveregister_extensionr   r   r/   <module>r      s2  6 # 	 	 , ,
 &		# Q!q
A!	1!!
  z	
 z !   
   . M M  "!" "#& '( )* %$$%18 
/ +A2aS?D2aS2aS?D2aS+ 
 0A H1#h/D2aS H1#h/D2aS0 
 +A2aS?D2aS2aS?D2aS+ 
q" +A2aS?D2aS+ 	

9:w)%% wB 
	
	
		!( NP   K&& 4   K&& .   ++U 3r   