
 Xc        
   @  s  d  d l  m Z d Z d  d l m Z m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z e Z e Z d Z d	 Z e j Z e j Z e j d
 k r e Z n e Z e j Z e j Z e j Z e j Z  e j! Z" e j# Z$ e j% Z& e j' Z( d Z) d Z* d Z+ d Z, d Z- d Z. d Z/ d Z0 d Z1 d Z2 d Z3 d Z4 d Z5 d Z6 d Z7 d Z8 d Z9 d Z: d Z; d Z< d Z= d  Z> d! Z? d" Z@ d# ZA d$ ZB d% ZC d& ZD d' ZE d( ZF d) ZG d* ZH i d+ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6ZI eJ g  eI jK   D] \ ZL ZM eM eL f ^ ql ZN iB dG dH f e dI d, d, d, f f  f 6dG dJ f e dI d, d. d, f f  f 6dK dL f e dI d, d, d: f f  f 6dK dM f e dI d, d. d: f f  f 6dN dO f e dI d0 d, dP f f  f 6dG dG f e d, d, d, d, f f  f 6dG dQ f e d, d, d. d, f f  f 6dK dK f e d, d, d, d: f f  f 6dR dR f e d, d, d, d: d: f d. f f 6dK dS f e d, d, d. d: f f  f 6dT dU f e d, d, d, dV f f  f 6dT dT f e d, d, d, dW f f  f 6dX dX f e d, d. d, dW f f  f 6dY dZ f e d, d, d, dP f f  f 6dY d[ f e d, d. d, dP f f  f 6dN dO f e d, d0 d, dP f f  f 6d\ d\ f e d. d, d, d: d: d: f f  f 6d\ d] f e d. d, d. d: d: d: f f  f 6d^ d^ f e d. d, d, d: d: d: d: f f  f 6d_ d_ f e d. d, d, d: d: d: d: f dI f f 6d^ d` f e d. d, d, d: d: d: d: f d, f f 6d^ d^ f e d. d, d, d: d: d: d: f d. f f 6d^ d^ f e d. d, d, d: d: d: d: f da f f 6db dc f e d0 d, d, d, f f  f 6db dd f e d0 d, d. d, f f  f 6db de f e d0 d, d, d. f f  f 6db df f e d0 d, d. d. f f  f 6db dg f e d0 d, d, d2 f f  f 6db dh f e d0 d, d. d2 f f  f 6db db f e d0 d, d, d: f f  f 6di di f e d0 d, d, d: d: f d. f f 6db dj f e d0 d, d. d: f f  f 6dk dk f e d4 d, d, d: d: d: d: f f  f 6dl dl f e d6 d, d, d: d: d: f f  f 6dm dm f e d: d, d, d: d: d: f f  f 6dG dH f e dI d, d, d, f f  f 6dG dJ f e dI d, d. d, f f  f 6dK dL f e dI d, d, d: f f  f 6dK dM f e dI d, d. d: f f  f 6dG dG f e d, d, d, d, f f  f 6dG dQ f e d, d, d. d, f f  f 6dK dK f e d, d, d, d: f f  f 6dR dR f e d, d, d, d: d: f d. f f 6dK dS f e d, d, d. d: f f  f 6dn dn f e d, d, d, dW f f  f 6do do f e d, d. d, dW f f  f 6dp dp f e d, d. d, dP f f  f 6dN dq f e d, d0 d, dP f f  f 6d\ d\ f e d. d, d, d: d: d: f f  f 6d\ d] f e d. d, d. d: d: d: f f  f 6d_ d_ f e d. d, d, d: d: d: d: f dI f f 6d^ d` f e d. d, d, d: d: d: d: f d, f f 6d^ d^ f e d. d, d, d: d: d: d: f d. f f 6d^ d^ f e d. d, d, d: d: d: d: f da f f 6db dc f e d0 d, d, d, f f  f 6db dd f e d0 d, d. d, f f  f 6db de f e d0 d, d, d. f f  f 6db df f e d0 d, d. d. f f  f 6db dg f e d0 d, d, d2 f f  f 6db dh f e d0 d, d. d2 f f  f 6db db f e d0 d, d, d: f f  f 6di di f e d0 d, d, d: d: f d. f f 6db dj f e d0 d, d. d: f f  f 6dk dk f e d4 d, d, d: d: d: d: f f  f 6dl dl f e d6 d, d, d: d: d: f f  f 6dm dm f e d: d, d, d: d: d: f f  f 6ZO dr ds dt g ZP du   ZQ dv e jR f dw     YZS dx e j f dy     YZT i dG e d, d, d, f eU f dG 6dK e d, d, d: f eU f dK 6dR e d, d, d: d: f d. f dR 6db e d0 d, d: f eU f db 6di e d0 d, d: d: f d. f di 6d[ e d, d. dP f eU f dY 6dT e d, d, dW f eU f dT 6dX e d, d. dW f eU f dX 6dO e d, d0 dP f eU f dN 6d\ e d. d, d: d: d: f eU f d\ 6d_ e d. d, d: d: d: d: f dI f d_ 6d^ e d. d, d: d: d: d: f d. f d^ 6dk e d4 d, d: d: d: d: f eU f dk 6dl e d6 d, d: d: d: f eU f dl 6dm e d: d, d: d: d: f eU f dm 6dp e d, d. dP f eU f dp 6dn e d, d, dW f eU f dn 6do e d, d. dW f eU f do 6dq e d, d0 dP f eU f dq 6ZV dz   ZW d{   ZX e jY d| eT eQ  e jZ d| eX  e j[ d| d}  e j[ d| d~  e j\ d| d  d S(   i(   t   print_functions   1.3.5(   t   Imaget	   ImageFile(   t   ImagePalette(   t   _binary(   t   isStringTypeNt   IIt   MMt   littlei   i  i  i  i  i
  i  i  i  i  i  i  i  i  i(  i1  i2  i;  i=  i@  iD  iR  iS  i[  i  i  iI  is  ii  i  i  i  t   rawi   t
   tiff_ccitti   t   group3i   t   group4i   t   tiff_lzwi   t	   tiff_jpegi   t   jpegi   t   tiff_adobe_deflatei   t   tiff_raw_16i  t   packbitsi  t   tiff_thunderscani)  t   tiff_deflatei  t   tiff_sgilogit  t   tiff_sgilog24iu  t   1s   1;Ii    s   1;IRt   Ls   L;Is   L;IRt   Fs   F;32Fi    s   1;Rt   LAs   L;Rs   I;16s   I;12i   i   s   I;16St   Is   I;32Ns   I;32St   RGBs   RGB;Rt   RGBAt   RGBXt   RGBai  t   Ps   P;1s   P;1Rs   P;2s   P;2Rs   P;4s   P;4Rt   PAs   P;Rt   CMYKt   YCbCrt   LABs   I;16Bs   I;16BSs   I;32BSs   F;32BFt   MM *s   II* s   II c         C  s   |  d  t  k S(   Ni   (   t   PREFIXES(   t   prefix(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   _accept   s    t   ImageFileDirectoryc           B  s  e  Z d  Z e d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d" d  Z d	   Z e e k r{ d
   Z n  d   Z d   Z d   Z d   Z i  Z d   Z d e f e d <d   Z d e f e d <d   Z d e f e d <d   Z d e f e d <d   Z d e f e d <d   Z d e f e d <d   Z d e f e d <d   Z d e f e d <d    Z d!   Z RS(#   s   This class represents a TIFF tag directory.  To speed things
        up, we don't decode tags unless they're asked for.

        Exposes a dictionary interface of the tags in the directory
        ImageFileDirectory[key] = value
        value = ImageFileDirectory[key]

        Also contains a dictionary of tag types as read from the tiff
        image file, 'ImageFileDirectory.tagtype'


        Data Structures:
        'public'
        * self.tagtype = {} Key: numerical tiff tag number
                            Value: integer corresponding to the data type from
                            `TiffTags.TYPES`

        'internal'
        * self.tags = {}  Key: numerical tiff tag number
                          Value: Decoded data, Generally a tuple.
                            * If set from __setval__ -- always a tuple
                            * Numeric types -- always a tuple
                            * String type -- not a tuple, returned as string
                            * Undefined data -- not a tuple, returned as bytes
                            * Byte -- not a tuple, returned as byte.
        * self.tagdata = {} Key: numerical tiff tag number
                            Value: undecoded byte string from file


        Tags will be found in either self.tags or self.tagdata, but
        not both. The union of the two should contain all the tags
        from the Tiff image file.  External classes shouldn't
        reference these unless they're really sure what they're doing.
        c         C  s   | d  |  _  |  j  t k rE t t |  _ |  _ t t |  _ |  _	 nD |  j  t
 k r} t t |  _ |  _ t t |  _ |  _	 n t d   |  j   d S(   s5   
        :prefix: 'II'|'MM'  tiff endianness
        i   s   not a TIFF IFDN(   R'   R   t   ib16t   ib32t   i16t   i32t   ob16t   ob32t   o16t   o32R   t   il16t   il32t   ol16t   ol32t   SyntaxErrort   reset(   t   selfR'   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __init__  s    c         C  s1   i  |  _  i  |  _ i  |  _ d  |  _ d  |  _ d  S(   N(   t   tagst   tagdatat   tagtypet   Nonet   nextt   offset(   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR7     s
    				c         C  s   t  |  j    S(   N(   t   strt   as_dict(   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __str__  s    c         C  s   t  |  j    S(   s(   Return a dictionary of the image's tags.(   t   dictt   items(   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyRA   !  s    c         C  sV   d d l  m } i  } x9 |  j   D]+ \ } } | j j | |  } | | | <q# W| S(   sU   
        Returns the complete tag dictionary, with named tags where posible.
        i(   t   TiffTags(   t   PILRE   RD   t   TAGSt   get(   R8   RE   t   resultt   tag_codet   valuet   tag_name(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   named%  s    c         C  s   t  |  j  t  |  j  S(   N(   t   lenR;   R:   (   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __len__2  s    c         C  sy   y |  j  | SWnc t k
 rt |  j | } |  j | } |  j | \ } } | |  |  |  j  | <} |  j | =| SXd  S(   N(   R:   t   KeyErrorR;   R<   t   load_dispatch(   R8   t   tagt   datat   typet   sizet   handler(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __getitem__5  s    
c         C  sw   yL |  | } t  |  d k rC | t k r4 t  n  t d   n  | d SWn$ t k
 rr | d  k rn   n  | SXd  S(   Ni   s   not a scalari    (   RN   t   SAMPLEFORMATRP   t
   ValueErrorR=   (   R8   RR   t   defaultRK   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt	   getscalar@  s    
	c         C  s   | |  j  k p | |  j k S(   N(   R:   R;   (   R8   RR   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __contains__O  s    c         C  s
   | |  k S(   N(    (   R8   RR   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   has_keyS  s    c         C  s,   t  | t  s | f } n  | |  j | <d  S(   N(   t
   isinstancet   tupleR:   (   R8   RR   RK   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __setitem__V  s    c         C  s&   |  j  j | |  j j | d    d  S(   N(   R:   t   popR;   R=   (   R8   RR   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   __delitem__^  s    c         C  s"   t  j |  j j   |  j j    S(   N(   t	   itertoolst   chainR:   t   __iter__R;   (   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyRe   a  s    c         C  s<   t  |  j    } g  | D] } |  | ^ q } t | |  S(   N(   t   listRe   t   zip(   R8   t   keyst   keyt   values(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyRD   d  s    c         C  s   | S(   N(    (   R8   RS   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt	   load_bytem  s    i   c         C  s-   | d d k r | d  } n  | j  d d  S(   Nit    s   latin-1t   replace(   t   decode(   R8   RS   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   load_stringq  s    i   c         C  sL   g  } x9 t  d t |  d  D] } | j |  j | |   q Wt |  S(   Ni    i   (   t   rangeRN   t   appendR,   R_   (   R8   RS   t   lt   i(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt
   load_shortw  s    i   c         C  sL   g  } x9 t  d t |  d  D] } | j |  j | |   q Wt |  S(   Ni    i   (   Rp   RN   Rq   R-   R_   (   R8   RS   Rr   Rs   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt	   load_long~  s    i   c         C  sb   g  } xO t  d t |  d  D]5 } | j |  j | |  |  j | | d  f  q Wt |  S(   Ni    i   i   (   Rp   RN   Rq   R-   R_   (   R8   RS   Rr   Rs   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   load_rational  s    3i   i   c         C  s8   t  j  d |  } |  j t k r. | j   n  t |  S(   Nt   f(   t   arrayR'   t   native_prefixt   byteswapR_   (   R8   RS   t   a(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt
   load_float  s    i   c         C  s8   t  j  d |  } |  j t k r. | j   n  t |  S(   Nt   d(   Rx   R'   Ry   Rz   R_   (   R8   RS   R{   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   load_double  s    i   c         C  s   | S(   N(    (   R8   RS   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   load_undefined  s    i   c         C  s  |  j    | j   |  _ |  j } |  j } x^t | | j d    D]A} | j d  } | |  | | d  } } t j r d d l	 m
 } | j j | d  }	 | j j | d  }
 t d |	 | f d d t d	 |
 | f d d n  y |  j | } Wn- t k
 r2t j rG t d
 |  qG qG n X| \ } } | | | d  } | d k r| j   } t j rt d |  n  | j | | d   t j rt d | j    n  t j | |  } | j |  n | d d | !} t |  | k r%t j d | t |  | f  qG n  | |  j | <| |  j | <t j rG | t t t t t f k rtt d |  qt d |  |  qG qG W| | j d   |  _ d  S(   Ni   i   i(   RE   t   unknowns   tag: %s (%d)t   endt    s   - type: %s (%d)s   - unsupported typei   s   Tag Location: %si   s   Data Location: %ssX   Possibly corrupt EXIF data.  Expecting to read %d bytes but only got %d. Skipping tag %ss   - value: <table: %d bytes>s   - value:(   R7   t   tellR?   R,   R-   Rp   t   readR   t   DEBUGRF   RE   RG   RH   t   TYPESt   printRQ   RP   t   seekR   t
   _safe_readRN   t   warningst   warnR;   R<   t   COLORMAPt   IPTC_NAA_CHUNKt   PHOTOSHOP_CHUNKt
   ICCPROFILEt   XMPR>   (   R8   t   fpR,   R-   Rs   t   ifdRR   t   typRE   t   tagnamet   typnamet   dispatchRU   RV   t   hereRS   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   load  sV    
		"						c      	   C  sZ  |  j  } |  j } | j | t |  j    t |  j j    } g  } | j } | j   t |  j  d d } d  } x| D]\ }	 }
 d  } |	 |  j
 k r |  j
 |	 } n  t j r t d |	 | |
 f  n  | d k r	t |
 t  r |
 d } }
 qh|
 } n_| d k r+d j |
  } }
 n=t |
 d  r~t |
 t  rW|
 d }
 n  d	 } d |
 j d
 d  d } }
 n |	 t k rt |  } d } n |	 t t f k s| d k rd } t |
 d t  r)t t j j |
   }
 q)n5 | s)d } x& |
 D] } | d k rd } qqWn  | d k rPd j t | |
   } n d j t | |
   } t j r'd d l m } | j j |	 d  } | j j | d  } t d | |	 f d d t d | | f d d |	 t t  t! t" t# f k rt |  } t d |  q't d |
  n  t |  d k r[| |	 | t |
  | d f  q t |  d k  r| |	 | t |
  | d t |  d d f  q t |
  } | d k r| d	 } n  | |	 | | | |  | f  | t |  7} | d @r | d 7} q q W| d  k	 r}| | \ }	 } } }
 } | sHt$ d   | |  j% |
  |  }
 |	 | | |
 | f | | <n  x| | D]t \ }	 } } }
 } t j d k rt |	 | | t& |
  t& |   n  | j | |	  | |  | |  |
  qW| j d  xJ | D]B \ }	 } } }
 } | j |  t |  d @r| j d  qqW| S(   Ni   i   s   Tag %s, Type: %s, Value: %si   ii   t    i    i   t   asciiRm   Rl   i   i   i   (   RE   R   s   save: %s (%d)R   R   s   - type: %s (%d)s   - value: <table: %d bytes>s   - value:s&   multistrip support not yet implementedt       ('   R0   R1   t   writeRN   R:   t   sortedRD   Rq   R   R=   R<   R   R   R   R^   R_   t   joinR   t   encodet   STRIPOFFSETSt   X_RESOLUTIONt   Y_RESOLUTIONRc   Rd   t   from_iterablet   mapRF   RE   RG   RH   R   R   R   R   R   R   t   AssertionErrorR-   t   repr(   R8   R   R0   R1   R:   t	   directoryRq   R?   t   stripoffsetsRR   RK   R   RS   t   vRE   R   R   RU   t   count(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   save  s    			!		!		"4
%/N(    t   __name__t
   __module__t   __doc__R   R9   R7   RB   RA   RM   RO   RW   R=   R[   R\   t   bytesR@   R]   R`   Rb   Re   RD   RQ   Rk   Ro   Rt   Ru   Rv   R|   R~   R   R   R   (    (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR)      sF   "																					Bt   TiffImageFilec           B  s_   e  Z d  Z d Z d   Z d   Z d   Z d   Z d   Z d
 d  Z
 d   Z d	   Z RS(   t   TIFFs
   Adobe TIFFc         C  s   |  j  j d  } | d  t k r1 t d   n  t | d   |  _ |  _ |  j j | d  |  _ |  _	 d |  _
 |  j  |  _ t j r t d  t d |  j  t d |  n  |  j d	  d
 S(   s#   Open the first image in a TIFF filei   i   s   not a TIFF filei   is   *** TiffImageFile._open ***s
   - __first:s   - ifh: i    N(   R   R   R&   R6   R)   RR   R   R-   t   _TiffImageFile__firstt   _TiffImageFile__nextt   _TiffImageFile__framet   _TiffImageFile__fpR   R   R   t   _seek(   R8   t   ifh(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   _opend  s    		
c         C  sT   | d k  r d } n  |  j  |  t j |  j  t j j |  j |  j  |  _ d S(   s%   Select a given frame as current imagei    N(   R   R   t   _decompression_bomb_checkRU   t   coret   newt   modet   im(   R8   t   frame(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR   }  s
    	c         C  s
   |  j    S(   s   Return the current frame number(   t   _tell(   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR     s    c         C  s  |  j  |  _ | |  j k  r3 d |  _ |  j |  _ n  x |  j | k  r	|  j s] t d   n  t j r t d | |  j |  j |  j j	   f  n  |  j j	   |  j j
 |  j  t j r t d |  j j	    n  |  j j |  j  |  j j |  _ |  j d 7_ q6 W|  j   d  S(   Nis   no more images in TIFF files9   Seeking to frame %s, on frame %s, __next %s, location: %ss   Loading tags, location: %si   (   R   R   R   R   R   t   EOFErrorR   R   R   R   R   RR   R   R>   t   _setup(   R8   R   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR     s$    			&	c         C  s   |  j  S(   N(   R   (   R8   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR     s    c         C  s  d } | d k r. |  j d k r. | | } n  |  j } | d k rU | d d f } n | d k r | d f } t |  j k r |  j t |  _ q nS | d k r | } n> | d	 k r | } d
 |  j k r |  j t d f |  _ q n  t |  j k r|  j t |  j	 d <n  | S(   s   Setup decoder contextsR   i   R	   i    i   R   R   R   R   i=  t   icc_profileN(
   R=   t   _planar_configurationt   _compressiont
   JPEGTABLESRR   t   tile_prefixt	   PREDICTORt   decoderconfigR   t   info(   R8   t   rawmodet   layert   tilet   argst   compression(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   _decoder  s&    		c   	      C  s7  t  j  j |   } |  j d k r0 t d   n  |  j s= | S|  j   t |  j  d k sk t d   n  |  j d \ } } } } | |  j j f } t  j	 |  j
 d | |  j  } y | j |  j |  Wn t k
 r t d   n Xt |  j d  r5t  j rt d  n  | j |  j j    \ } } n t |  j d	  rt  j r]t d
  n  |  j j d  | j d  \ } } n4 t  j rt d  n  | j |  j j    \ } } g  |  _ d |  _ t |  j d  r|  j s|  j j   qn  d |  _ | d k  rt |   n  |  j   t  j  j |   S(   s]    Overload method triggered when we detect a compressed tiff
            Calls out to libtiff s   cannot load this imagei   s   Not exactly one tilei    t   libtiffs   Couldn't set the imaget   getvalues5   have getvalue. just sending in a string from getvaluet   filenos3   have fileno, calling fileno version of the decoder.t   fpfps+   don't have fileno or getvalue. just readingt   closeN(   R   R   R   R=   t   IOErrort   load_prepareRN   R   R?   t   _getdecoderR   R   t   setimageR   RY   t   hasattrR   R   R   Rn   R   R   R   t   readonlyR   R   t   load_end(	   R8   t   pixelt   ignoredt   extentst	   ignored_2R   t   decodert   nt   err(    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   _load_libtiff  sL    	

	!						
c         C  s  d |  j  k r t d   n  |  j  j } t | t d  |  _ | t d  |  _ | t d  } | t	 d  } t
 j r t d  t d |  j  t d |  t d |  j  t d	 |  n  | t  } | t  } | | f |  _ t
 j rt d
 |  j  n  | t d  } |  j  j | | | |  j  j t d/  |  j  j t d0  f } t
 j rgt d |  n  y t | \ |  _ } Wn3 t k
 rt
 j rt d  n  t d   n Xt
 j rt d |  t d |  j  n  |  j |  j d <| t d1  }	 | t d2  }
 |	 r0t |	 t  r0|	 d f }	 n  |
 rUt |
 t  rU|
 d f }
 n  |	 r|
 r|	 d |	 d pud }	 |
 d |
 d pd }
 | t d  } | d k r|	 |
 f |  j d <q| d k r|	 d |
 d f |  j d <q|	 |
 f |  j d <n  d } } } g  |  _ t  |  j  k rk|  j  t  } | t! |  } |  j d } t" sf|  j d3 k r|  j# |  _$ y. t% |  j& d!  ot' j( |  j& j)    } Wn t k
 rt* } n X| d k r1|  j  j | | d |  j  j t d4  |  j  j t d5  f } t
 j rt d |  n  t | \ |  _ } n  |  j d6 k rUd# | k rUd$ } n  | |  j | f } |  j j+ |  j d d | | f d | f  d. } qxt- t. |   D] } |  j/ | | |  } |  j j+ |  j d t0 | |  | t0 | | |  f | | | f  t
 j r*t d% |  j  n  | | } | |  j d k r^d } } | d 7} n  d. } qWnt1 |  j  k rb| d&  } | d'  } d. } x |  j  t1 D] } | s|  j/ | |  } n  |  j j+ |  j | | | | | | f | | f  | | } | |  j d k rd | | } } | |  j d k r[d } } | d 7} d. } q[qqWn" t
 j rxt d(  n  t d)   |  j d* k rg  |  j  t2 D] } t3 | d+  ^ q} t4 j5 d, d- j6 |   |  _7 n  d. S(7   s-   Setup this image object based on current tagsi  s+   Windows Media Photo files not yet supportedi   i    s   *** Summary ***s   - compression:s   - photometric_interpretation:s   - planar_configuration:s   - fill_order:s   - size:s   format key:s   - unsupported formats   unknown pixel modes   - raw mode:s   - pil mode:R   g      ?i   t   dpii   gRQ@t
   resolutionR
   R   R   R   R   R   R   R   R   R   R   s   I;16Bs   I;16s   I;16Ns   tiles: iB  iC  s   - unsupported data organizations   unknown data organizationR    i   s   RGB;LR   N(   i   (    (   i   i   (   i   i   (
   R
   R   R   R   R   R   R   R   R   R   (   i   (    (   s   I;16Bs   I;16(8   RR   R   R[   t   COMPRESSION_INFOt   COMPRESSIONR   t   PLANAR_CONFIGURATIONR   t   PHOTOMETRIC_INTERPRETATIONt	   FILLORDERR   R   R   t
   IMAGEWIDTHt   IMAGELENGTHRU   RX   R'   RH   t   BITSPERSAMPLEt   EXTRASAMPLESt	   OPEN_INFOR   RP   R6   R   R   R   R^   R_   t   RESOLUTION_UNITR   R   t   ROWSPERSTRIPt   READ_LIBTIFFR   R   R   R   t   ost   dupR   t   FalseRq   R=   Rp   RN   R   t   mint   TILEOFFSETSR   t   o8R   R	   R   t   palette(   R8   R[   t   photot	   fillordert   xsizet   ysizet   formatRi   R   t   xrest   yrest   resunitt   xt   yRr   t   offsetst   ht   wR   R{   Rs   t   oR   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR     s    	
					      	
					%	

	


	*N(   R   R   R   t   format_descriptionR   R   R   R   R   R=   R   R   R   (    (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR   _  s   						Ec         C  sk   t  |  t j  r2 t |   d d k s. t  |  St  |  t  rK |  d f St |   }  t |  d  d f S(   Ni   i    i   i   (   R^   t   collectionst   SequenceRN   R   t   intt   float(   RK   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   _cvt_res  s    
c      	   C  s-	  y# t  |  j \ } } } } } } Wn$ t k
 rI t d |  j   n Xt |  }	 |  j j d |  j j d d   }
 t p |
 d k } t	 |  d d  |	 t
 <| r | j   d k r | j |	 j |	 j d  |	 j d   n  |  j d |	 t <|  j d |	 t <|  j j d	 i   } t j r<t d
 | j  n  t | j    } xC | D]; } | j |  |	 | <y | j | |	 j | <WqUqUXqUWt |  d  r.xb t t t t t t f D]H } | |  j  k r|  j  | |	 | <n  |  j  j j | d   |	 j | <qWd |  j k r.|  j d |	 t" <q.n  d |  j k rQ|  j d |	 t# <n  d |  j k rt$ |  j d  |	 t <|	 t <n  d |  j k rt$ |  j d  |	 t <n  d |  j k rt$ |  j d  |	 t <n  d |  j k r;|  j d } | d k r	d |	 t <q;| d k s!| d k r.d |	 t <q;d |	 t <n  d |  j k r^|  j d |	 t% <n  d |  j k r|  j d |	 t& <n  d |  j k r|  j d |	 t' <n  d |  j k r|  j d |	 t( <n  |  j j d  } | rd |	 t <t$ | d  |	 t <t$ | d  |	 t <n  | d/ k rR| |	 t) <t* |  d k rRt* |  |	 t+ <qRn  | d  k	 rk| |	 t, <n  | d k r| |	 t- <n  | |	 t. <|  j d k r|  j/ j0 d d  } t1 d   | D  |	 t2 <n  t* |  |  j d | d d  d } |  j d |	 t3 <| |  j d |	 t4 <d |	 t5 <t6 j |
 d  |	 t7 <| rt j rht d!  t |	 j8    n  d } t | d"  r| j9 d  t: j; | j<    } n  t5 t4 t3 t" g } i  } | d | t) <x t= j> |	 j8   t	 |  d# i   j8    D]\ } } | | k r| | k rt? | d  t1 k rzt* |  d k rzg  | D]$ } t@ | d  t@ | d  ^ qF| | <qn  t? | d  t1 k rt* |  d k rt@ | d d  t@ | d d  | | <qn  t? |  t1 k r+t* |  d k r+t? | d  tA t@ f k rt |  | | <qqn  t? |  t1 k rwt* |  d k rwt@ | d  t@ | d  | | <qn  t? |  t1 k rt* |  d k r| d } n  tB |  rtC | jD d$ d%   d& | | <qq| | | <qqWt j rt |  n  |  j d0 k rd) } n  | |
 | | | f } t jE |  j d* | |  jF  } | jG |  j/ d1 |  j  xB tH r| jD d2  \ } } } | s| j |  n  | riPqiqiW| d k  r	t d- |   q	nA |	 jI |  } tJ jK |  | d d3 |  j | | | d f f g  d. |  j k r)	|	 |  _L n  d  S(4   Ns   cannot write mode %s as TIFFR   R	   R   i   i    i*   i   t   tiffinfos   Tiffinfo Keys: %sRR   R   t   descriptionR   s   x resolutions   y resolutions   resolution unitt   inchi   t   cmt
   centimeteri   t   softwares	   date timet   artistt	   copyrightR   R    R   s   RGB;Lc         s  s   |  ] } t  |  d  Vq d S(   i   N(   t   i8(   t   .0R   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pys	   <genexpr>V  s    i   s   Saving using libtiff encoderR   R   R   Rm   Rl   s   I;16Bs   I;16s   I;16NR   i   i   s(   encoder error %d when writing image filet   _debug_multipage(   i   (   s   I;16Bs   I;16(   i    i    i @  (   i    i    (M   t	   SAVE_INFOR   RP   R   R)   t   encoderinfoRH   R   t   WRITE_LIBTIFFt   getattrR   R   R   R'   R0   R1   RU   R   R   R   R   R   Rh   Rf   R<   R   R   R   R   R   R   R   RR   R=   R   t   IMAGEDESCRIPTIONR  t   SOFTWAREt	   DATE_TIMEt   ARTISTt	   COPYRIGHTR   RN   t   SAMPLESPERPIXELR   RX   R   R   t
   getpaletteR_   R   R   t   STRIPBYTECOUNTSR   t   COMPRESSION_INFO_REVR   RD   R   R   R   R   Rc   Rd   RT   R  R  R   R   R   t   _getencodert   encoderconfigR   t   TrueR   R   t   _saveR  (   R   R   t   filenameR   R'   R   R   t   bitst   extraR   R   R   R   Rh   Ri   t   unitR   t   lutt   stridet   _fpt	   blocklistt   attst   kR   t   eltR{   t   eRr   t   sR}   R?   (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyR)    s   #-	#"


'
	
%(5(*$$"$ 			&R   s   .tifs   .tiffs
   image/tiff(]   t
   __future__R    t   __version__RF   R   R   R   R   t	   PIL._utilR   R   Rx   t   sysR	  Rc   R   R   R   R  R   R   R  R   t	   byteorderRy   t   i16leR2   t   i32leR3   t   o16leR4   t   o32leR5   t   i16beR*   t   i32beR+   t   o16beR.   t   o32beR/   R   R   R   R   R   R   R  R   R"  R   R$  R   R   R   R   R  R  R   R   R   R   R   RX   R   R!  R   R   R   t   EXIFIFDR   t   IMAGEJ_META_DATA_BYTE_COUNTSt   IMAGEJ_META_DATAR   RC   RD   R3  R   R%  R   R&   R(   t   MutableMappingR)   R   R=   R  R  R)  t   register_opent   register_savet   register_extensiont   register_mime(    (    (    s7   /usr/lib/python2.7/dist-packages/PIL/TiffImagePlugin.pyt   <module>*   s`  											
1""""""""("""""""((+...."""""""("+(("""""""("""""((...."""""""("+(+	 ~ q"%%%""		