
    	b6                         d dl Z d dlZd dlZd dl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dZdddd	ddddd	dd	ddZd Zd Zd Zd Zy)    N)ElementTree                     )r   r   r	   r
   r   r      r   	   
         c                    |t         k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t
        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  r| d	z  S |t        k(  r| d
z  S |t        k(  r| dz  S | S )Ng5B>g      ?gti0?gd?g
F%u?gK7A?RQ@gffffff9@   i	  i8c  )_UNIT_KMint
_UNIT_100M	_UNIT_10M_UNIT_1M
_UNIT_10CM_UNIT_CM_UNIT_MM_UNIT_0_1MM_UNIT_0_01MM_UNIT_UM)densityunits     5/usr/lib/python3/dist-packages/imagesize/imagesize.py_convertToDPIr$   #   s   x7Y&,--		7X%+,,		7W$s*++		7V#c)**		7U?S())		7T>C'((		7T>C'((		}		~		N    c                    t        j                  d|       }|st        d| z        |j                         \  }}|dk(  rt	        |      S |dk(  rt	        |      dz  dz  S |dk(  rt	        |      dz  dz  dz  S |d	k(  rt	        |      dz  S |d
k(  rt	        |      dz  dz  S |dk(  rt	        |      dz  dz  S |dk(  rt	        |      S t        d|z        )Nz(\d+(?:\.\d+)?)?([a-z]*)$zunknown length value: %s cm`   r   mmr   inpcr   ptpxzunknown unit type: %s)rematch
ValueErrorgroupsfloat)valuematchedlengthr"   s       r#   _convertToPxr7   ;   s    hh3U;G3e;<<>>#LFDrzV}	V}r!D((	V}r!D(2--	V}r!!	V}r!A%%	V}r!A%%	V}
,t3
44r%   c                    d}d}t        | t        j                        r| }nt        | d      }	 |j	                  d      }t        |      }|dk\  r&|dd dv r	 t        j                  d|dd       \  }}n|d
k\  r8|j                  d      r'|dd dk(  r	 t        j                  d|dd
       \  }}n]|dk\  r0|j                  d      r	 t        j                  d|dd       \  }}n(|dk\  r|j                  d      r	 |j                  d       d}d}d|cxk  rdk  rn n|dv r|j                  |d       |j	                  d      }t        |      dk(  r |j	                  d      }t        |      dk(  r t        |      }t        j                  d|j	                  d            d   dz
  }d|cxk  rdk  sn |dv r|j                  dd       t        j                  d|j	                  d            \  }}n|dk\  rM|j                  d      r<|j                  d       	 t        j                  d|j	                  d            \  }}n|dk\  r|j                  d!      r
t        j                  d"|dd       d   }|j                  |       t        j                  d|j	                  d            d   }	t        |	      D ]  }
t        j                  d#|j	                  d            \  }}}}|d$k(  r'|d%k(  rt        |d&z        }n?|dk(  r|}n7t        d'      |d(k(  r'|d%k(  rt        |d&z        }n|dk(  r|}nt        d)      |dk7  s|dk7  s n |dk(  s|dk(  rt        d*      |dk\  r|j                  d+      rt        j                  d,|dd       d   }|j                  |       t        j                  d-|j	                  d            d   }	t        |	      D ]H  }
t        j                  d.|j	                  d            \  }}}}|d$k(  r|}n|d(k(  r|}|dk7  sB|dk7  sH n |dk(  s|dk(  rt        d*      |dk\  r|j                  d/      rt        j                  d,|dd       d   }|dk7  rt        d0j!                              t        j                  d1|dd       d   }|j                  |       t        j                  d1|j	                  d            d   }	t        |	      D ]H  }
t        j                  d2|j	                  d3            \  }}}}|d$k(  r|}n|d(k(  r|}|dk7  sB|dk7  sH n |dk(  s|dk(  rt        d4      |d5k\  r|j                  d6      s|j                  d7      r|j                  d       |j	                  d8      }	 |j#                  d9      }t%        j&                  d:|      j)                  d      }t%        j&                  d;|      j)                  d      }t-        |      }t-        |      }n|dd d=k(  r|dd d>v r|j                  d       g }	 |j	                  d      }|j/                         r#|d?k(  rt        d@      |dAk(  r|j1                          I|j3                         st        dB      |}|j	                  d      }|j3                         r'||z  }|j	                  d      }|j3                         r'|j5                  t        |             t        |      dk(  rn!|j                  dt6        j8                         |\  }}n|j                  dC      r|dd dDk(  r|dd dEk(  rt        j                  dF|dGdH       \  }}n|dd dIk(  r?t        j                  dJ|d
dK dLz         d   }t        j                  dJ|dKdH dLz         d   }nP|dd dMk(  r=|dNdO }|d   dPz  dz  |d   z  dz   }|d%   dQz  dz  |d   dz  z  |d   dz  dz	  z  dz   }nt        dR      |j;                          ||fS # t        j                  $ r t        d	      w xY w# t        j                  $ r t        d      w xY w# t        j                  $ r t        d      w xY w# t        j                  t        f$ r t        d      w xY w# t        j                  $ r t        d       w xY w# t*        $ r t        d<      w xY w# |j;                          w xY w)Sz
    Return (width, height) for a given img file content
    no requirements
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    r   rb   r   Nr   s   GIF87as   GIF89az<hhzInvalid GIF file      PNG

r      s   IHDRz>LLInvalid PNG filer   r      r         )         r      >Hz>HHr
   Invalid JPEG file      jP  

0   Invalid JPEG2000 files   MM *>Lz>HHLL   r	   i   z?Invalid TIFF file: width column data type should be SHORT/LONG.i  z@Invalid TIFF file: height column data type should be SHORT/LONG.z?Invalid TIFF file: width and/or height IDS entries are missing.s   II* z<Lz<Hz<HHLLs   II+ z@Invalid BigTIFF file: Expected offset to be 8, found {} instead.z<Qz<HHQQ   zBInvalid BigTIFF file: width and/or height IDS entries are missing.r   s   <?xmls   <svgi   zutf-8z[^-]width="(.*?)"z[^-]height="(.*?)"zInvalid SVG file   Ps   123456r%   zInvalid Netpbm file   #z&Invalid character found on Netpbm files   RIFFs   WEBPs   VP8 z<HH      s   VP8Xz<I       s   VP8L      ?      zUnsupported WebP file)
isinstanceioBytesIOopenreadlenstructunpackerrorr1   
startswithseekord	TypeErrorranger   formatdecoder/   searchgroup	Exceptionr7   isspacereadlineisdigitappendosSEEK_CURclose)filepathheightwidthfhandleheadsizeftypebyteoffsetifdsizeitagdatatypecountdatabytesize_offsetsizesnext_chrbs                      r#   getr   S   s    FE(BJJ'x&h||B4y2:$r(&<<5 &eT!BZ @v RZDOO,@Ad2bkU\F\5 &eT"R[ Av RZDOO,@A5 &eT!BZ @v QY4??;76Q%/4/5<N3NLLq)"<<?Dd)t+&||A d)t+IE!==w||A?BQFD %/4/5<N3N Q" &eW\\!_ E RZDOO,MNLL: &eW\\!_ E QY4??+>?]]4a3A6FLL mmD',,q/:1=G7^ -3]]7GLLQSDT-U*Xud#:1} #D5L 1!Q $()jkkCZ1}!$TE\!2!Q!%()kllB;6R<#$ {fl !bccQY4??+>?]]4a3A6FLL mmD',,q/:1=G7^ -3]]7GLLQSDT-U*Xud#: ECZ!FB;6R< {fl !bccQY4??+>?$mmD$q)<Q?O!# !c!j!jkq!rss]]4a4Q7FLL mmD',,q/:1=G7^ -3]]7GLLQSDT-U*Xud#: ECZ!FB;6R< {fl !eff QYDOOH59QLLO<<%D5{{7+		"6=CCAF#8$?EEaH !'E!&)F "1X$q)y"8LLOE"<<?##%s?$%:;;t#$$&'')$%MNN"<<?&&(H$D&||AH &&( SY'u:?R-9 : "ME6__W%$q**?Br{g% &eT"R[ Avb'dDBK%,?@CtT"R[5-@A!Db'BKQ4"9*ad2a7aD2I",1;!s
q?PQUVV !899 	&=E << 5 !3445 << 5 !3445 << 5 !3445$ LL), 6 !4556 << : !899:H  5 !3445l 	s   (c, `$ 4 c, a 1c, 
a( &c,  A7b
 8Ab
 :b
 :b
 <)c, &(b2 Dc, c, Cc, *c, 0Dc, =c, A"c, &Ac C)c, +D%c, $ac, a%%c, (bc, 
%b//c, 2cc, c))c, ,c>c                    d}d}t        | t              st        |       } t        | d      5 }|j	                  d      }t        |      }|dk\  r	|dd dv rnt|dk\  r|j                  d      rd	}|d	d }	 |dd	 }|dk(  rG	 t        j                  d|d	d       \  }	}
}|r!t        |	t              }t        |
t              }n|	}|
}n|dk(  rn	 t        j                  d|dd       \  }||dz   z  }|j                  |       |j	                  d      }|dk\  rE|j                  d      r3	 |j                  d       d}d}d|cxk  rdk  sn |dk(  rp|j                  dd       t        j                  d|j	                  d            \  }}	}
|dk(  s|dk(  r|	}|
}n%|dk(  r t        |	t              }t        |
t              }n|j                  |d       |j	                  d      }t        |      dk(  r |j	                  d      }t        |      dk(  r t        |      }t        j                  d|j	                  d            d   dz
  }d|cxk  rdk  s	n nl|dk\  rf|j                  d       rT|j                  d!       t        j                  d|j	                  d            d   d	z
  }|j                  dd       d"}	 |dkD  r^|j	                  d	      }|dd }|d#k(  rd
}|d	z  }n;t        j                  d|dd       \  }|j                  |d	z
  d       ||z  }|dkD  r^|r|dkD  r|j	                  d	      }|dd }|d$k(  rCt        j                  d%|j	                  d            \  }
}	}}t        |	|      }t        |
|      }n;t        j                  d|dd       \  }|j                  |d	z
  d       ||z  }|dkD  rddd       ||fS # t        j                  $ r t        d      w xY w# t        j                  $ r t        d      w xY w# t        j                  $ r t        d      w xY w# t        j                  $ r}t        d&      d}~ww xY w# 1 sw Y   ||fS xY w)'z
    Return (x DPI, y DPI) for a given img file content
    no requirements
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    r   r9   r<   r   Nr   r;   r=   r   Tr
   s   pHYsz>LLBr?   s   IDATrL   r   r      r   r@   rA   rB      r   r   z>BHHr   rF   rG   rH   rI       Fs   res s   resdz>HHBBrK   )rY   bytesstrr\   r]   r^   rb   r_   r`   ra   r1   r$   r   rc   r   rd   )rs   xDPIyDPIrv   rw   rx   chunkOffsetchunk	chunkTypexDensityyDensityr"   dataSizery   rz   
headerSizefoundResBox	boxHeaderboxTypeboxSizeyUnitxUnites                          r#   getDPIr     s    DDh&x=	h	 [:||B4y 2:$r(&<<RZDOO,@AKHE!!AJ	'=39==qr3S0(D ,Xx@,Xx@''')=$*MM$a
$C	  8b=0KLL-#LL,E/ 2 QY4??;76Q%/4/}Q*39==VW3Y0h19	#+D#+D!QY#08#DD#08#DDLLq)"<<?Dd)t+&||A d)t+IE!==w||A?BQFD! %/4//( RZDOO,MNLLtW\\!_=a@1DJLLAK: 1n 'QI'mG')&*"a
%}}T9Ra=AHGLL1a0')J !1n $q.$+LLO	"+AB-"g-?E}}WV]VbVbceVf?g<Hhu#05#AD#05#AD!#)==y!}#EWq[!4"g-
 %q._[:x :Y "<< =();<<= "<< =();<<=8 << 6 !4556@ << : !899:u[:x :s   AQ# O0Q#O9)AQ#-C(PAPPA*Q#A"P=+BP=O66Q#9PQ#P::Q#=Q QQ  Q##Q/)rZ   rp   r/   r_   	xml.etreer   r   r   r   r   r   r   r   r   r   r    
_UNIT_INCH_TIFF_TYPE_SIZESr$   r7   r   r    r%   r#   <module>r      s    	 	 	  !
	

   050yxir%   