B
    }['                 @   sn   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dddddddddddddZdd Zdd Zdd ZdS )    N                     )r   r   r   r   r	   r
      r   	   
         c             C   s   |t krt| d d S |tkr0t| d d S |tkrHt| d d S |tkr`t| d d S |tkrxt| d d S |tkrt| d d S |tkrt| 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	  i8c  )_UNIT_KMint
_UNIT_100M	_UNIT_10M_UNIT_1M
_UNIT_10CM_UNIT_CM_UNIT_MM_UNIT_0_1MM_UNIT_0_01MM_UNIT_UM)Zdensityunit r   (lib/python3.7/site-packages/imagesize.py_convertToDPI   s*    r    c          	   C   s  d}d}t | dv}|d}t|}|dkr|dd dkrytd|dd \}}W n tjk
rz   td	Y nX n|dkr|d
r|dd dkrytd|dd \}}W n tjk
r   tdY nX n|dkr:|d
r:ytd|dd \}}W n  tjk
r4   tdY nX nL|dkr4|dr4y|d d}d}xd|  kr~dkrn n
|dkr||d |d}xt	|dkr|d}qW t	|}td|dd d }qfW |dd td|d\}}W n  tjk
r.   tdY nX nR|dkr|dr|d ytd|d\}}W n  tjk
r   tdY nX n|dkr|d rtd!|dd d }|| td|dd }	xt
|	D ]}
td"|d\}}}}|d#krF|d$kr,t|d% }n|dkr<|}ntd&n:|d'kr|d$krht|d% }n|dkrx|}ntd(|dkr|dkrP qW |dks|dkrtd)n|dkr|d*rtd+|dd d }|| td,|dd }	x`t
|	D ]T}
td-|d\}}}}|d#kr@|}n|d'krN|}|dkr|dkrP qW |dks~|dkrtd)W dQ R X ||fS ).zQ
    Return (width, height) for a given img file content
    no requirements
    r   rb   r   Nr
   )s   GIF87as   GIF89az<hhzInvalid GIF files   PNG

r      s   IHDRz>LLzInvalid PNG filer   r   s   r         )         r      z>Hz>HHr   zInvalid JPEG files      jP  

0   zInvalid JPEG2000 files   MM *z>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<HHLL)openreadlenstructunpackerror
ValueError
startswithseekordranger   )filepathZheightwidthfhandleheadsizeftypebyteoffsetZifdsizeitagZdatatypecountdatar   r   r   get7   s    
"
(
 












rC   c             C   sr  d}d}t | dP}|d}t|}|dkrD|dd dkrDn|dkrT|drTd	}|d	d }x|d
d	 }|dkrytd|d	d \}	}
}W n tjk
r   tdY nX |rt|	t	}t|
t	}n|	}|
}P ql|dkrP qlytd|dd
 \}W n  tjk
r*   tdY nX ||d 7 }|
| |d}qlW n|dkr|dry|
d d}d}xd|  krdksbn |dkr|
dd td|d\}}	}
|dks|dkr|	}|
}n|dkrt|	t}t|
t}P |
|d |d}xt|dkr:|d}qW t|}td|dd d }qW W n  tjk
r   tdY nX n|dkr`|dr`|
d  td|d
d d	 }|
d
d d!}yPx|dkrttd"| |d	}|d
d }t| |d#kr.d$}|d	8 }td% P td&| td|dd
 \}td'| |
|d	 d ||8 }qW |r&x|dkr$|d	}|d
d }t| |d(krtd) td*|d\}
}	}}t|	|}t|
|}P td|dd
 \}td'| |
|d	 d ||8 }q~W W n6 tjk
r^ } zt| td+W dd}~X Y nX W dQ R X ||fS ),zQ
    Return (width, height) for a given img file content
    no requirements
    r   r!   r"   r   Nr
   )s   GIF87as   GIF89as   PNG

r   r   s   pHYsz>LLBzInvalid PNG files   IDATz>Lr   r      r   s   r$   r%      r   r   z>BHHr	   r)   z>HzInvalid JPEG files      jP  

    F
headerSizezres Tzfound res super boxz@1boxSizeZresdz@2z>HHBBzInvalid JPEG2000 file)r,   r-   r.   r3   r/   r0   r1   r2   r    r   r4   r   r5   print)r7   ZxDPIZyDPIr9   r:   r;   ZchunkOffsetchunkZ	chunkTypeZxDensityZyDensityr   ZdataSizer<   r=   rG   ZfoundResBoxZ	boxHeaderZboxTyperH   ZyUnitZxUniter   r   r   getDPI   s    








$










$rL   )r/   r   r   r   r   r   r   r   r   r   r   Z
_UNIT_INCHZ_TIFF_TYPE_SIZESr    rC   rL   r   r   r   r   <module>   s4   c