
}[c           @   s   d  d l  Z  d Z d Z d  Z d Z d Z d Z d Z d Z d	 Z	 d
 Z
 d
 Z i d d 6d d 6d d 6d d 6d d	 6d d
 6d d 6d d 6d d 6d d 6d d 6d d 6Z d   Z d   Z d   Z d S(   iNiii    i   i   i   i   i   i   i   i   i	   i
   i   i   c         C   s  | t  k r t |  d d  S| t k r< t |  d d  S| t k rZ t |  d d  S| t k rx t |  d d  S| t k r t |  d d  S| t k r t |  d d  S| t k r t |  d d  S| t k r |  d	 S| t	 k r |  d
 S| t
 k r|  d S|  S(   Ng5B>g      ?gti0?gd?g
F%u?gK7A?gRQ@gffffff9@i   i	  i8c  (   t   _UNIT_KMt   intt
   _UNIT_100Mt	   _UNIT_10Mt   _UNIT_1Mt
   _UNIT_10CMt   _UNIT_CMt   _UNIT_MMt   _UNIT_0_1MMt   _UNIT_0_01MMt   _UNIT_UM(   t   densityt   unit(    (    s(   lib/python2.7/site-packages/imagesize.pyt   _convertToDPI   s*    c      	   C   s  d } d } t  |  d  } | j d  } t |  } | d k r | d  d1 k r y# t j d | d d ! \ } } Wqt j k
 r t d	   qXn| d k r| j d
  r| d d !d k ry# t j d | d d ! \ } } Wqt j k
 rt d   qXn| d k ry| j d
  ryy# t j d | d d ! \ } } Wqt j k
 rut d   qXn@| d k r| j d  ry | j d  d } d } x d | k od k n s| d2 k rU| j | d  | j d  } x% t	 |  d k r"| j d  } qWt	 |  } t j d | j d   d d } qW| j d d  t j d | j d   \ } } Wqt j k
 rt d   qXn| d k r!| j d  r!| j d   y% t j d | j d   \ } } Wqt j k
 rt d!   qXn| d k r| j d"  rt j d# | d d ! d } | j |  t j d | j d   d }	 x t
 |	  D] }
 t j d$ | j d   \ } } } } | d% k r| d& k rt | d'  } q]| d k r| } q]t d(   nO | d) k r]| d& k r9t | d'  } q]| d k rN| } q]t d*   n  | d k r| d k rPqqW| d k s| d k rt d+   qn| d k r| j d,  rt j d- | d d ! d } | j |  t j d. | j d   d }	 x t
 |	  D]s }
 t j d/ | j d   \ } } } } | d% k rZ| } n | d) k ro| } n  | d k r| d k rPqqW| d k s| d k rt d+   qn  Wd0 QX| | f S(3   sQ   
    Return (width, height) for a given img file content
    no requirements
    it   rbi   i
   i   t   GIF87at   GIF89as   <hhs   Invalid GIF files   PNG

i   i   t   IHDRs   >LLs   Invalid PNG filei   i   s   i    i   i   i   i   i   i   i   s   >Hs   >HHi   s   Invalid JPEG files      jP  

i0   s   Invalid JPEG2000 files   MM *s   >Ls   >HHLLi   i   i   s?   Invalid TIFF file: width column data type should be SHORT/LONG.i  s@   Invalid TIFF file: height column data type should be SHORT/LONG.s?   Invalid TIFF file: width and/or height IDS entries are missing.s   II* s   <Ls   <Hs   <HHLLN(   R   R   (   i   i   i   (   t   opent   readt   lent   structt   unpackt   errort
   ValueErrort
   startswitht   seekt   ordt   rangeR   (   t   filepatht   heightt   widtht   fhandlet   headt   sizet   ftypet   bytet   offsett   ifdsizet   it   tagt   datatypet   countt   data(    (    s(   lib/python2.7/site-packages/imagesize.pyt   get7   s    #.##,'%%'		'		c      	   C   s[  d } d } t  |  d  4} | j d  } t |  } | d k rX | d  d+ k rX n| d k r| j d  rd	 } | d	 } xt r| d
 d	 !} | d k r"y# t j d | d	  \ }	 }
 } Wn  t j k
 r t d   n X| rt	 |	 t
  } t	 |
 t
  } n |	 } |
 } Pq | d k r2Pq y  t j d | d d
 ! \ } Wn  t j k
 rtt d   n X| | d 7} | j |  | j d  } q Wn| d k r5| j d  r5yN| j d  d } d } x.d | k od k n s| d k r| j d d  t j d | j d   \ } }	 }
 | d k sT| d k rc|	 } |
 } n- | d k rt	 |	 t  } t	 |
 t  } n  Pn  | j | d  | j d  } x% t |  d k r| j d  } qWt |  } t j d | j d   d d } qWWqKt j k
 r1t d   qKXn| d k rK| j d  rK| j d   t j d | j d
   d d	 } | j d
 d  t } yx | d k rFd! | f GH| j d	  } | d
 } | GH| d" k rt } | d	 8} d# GHPn  d$ | f GHt j d | d
   \ } d% | f GH| j | d	 d  | | 8} qW| rx | d k r| j d	  } | d
 } | GH| d& k rd' GHt j d( | j d   \ }
 }	 } } t	 |	 |  } t	 |
 |  } Pn  t j d | d
   \ } d% | f GH| j | d	 d  | | 8} qPWn  WqKt j k
 rG} | GHt d)   qKXn  Wd* QX| | f S(,   sQ   
    Return (width, height) for a given img file content
    no requirements
    iR   i   i
   i   R   R   s   PNG

i   i   t   pHYss   >LLBs   Invalid PNG filet   IDATs   >Li    i   i   i   s   i   i   i   i   i   s   >BHHi   i   s   >Hs   Invalid JPEG files      jP  

i    t
   headerSizes   res s   found res super boxs   @1t   boxSizet   resds   @2s   >HHBBs   Invalid JPEG2000 fileN(   R   R   (   R   R   R   R   t   TrueR   R   R   R   R   R   R   R   R   t   False(   R   t   xDPIt   yDPIR    R!   R"   t   chunkOffsett   chunkt	   chunkTypet   xDensityt   yDensityR   t   dataSizeR#   R$   R/   t   foundResBoxt	   boxHeadert   boxTypeR0   t   yUnitt   xUnitt   e(    (    s(   lib/python2.7/site-packages/imagesize.pyt   getDPI   s    
	# $	+#


'(   R   R    R   R   R   R   R   R   R   R	   R
   t
   _UNIT_INCHt   _TIFF_TYPE_SIZESR   R,   RB   (    (    (    s(   lib/python2.7/site-packages/imagesize.pyt   <module>   s6   
		c