o
    N i¨6  ã                   @   sš   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d„ Zdd„ Zdd„ Zdd„ ZdS )é    N)ÚElementTreeéýÿÿÿéþÿÿÿéÿÿÿÿé   é   é   é   é   é   é   )r   r   r   r	   r
   r   é   r   é	   é
   é   é   c                 C   sÜ   |t krt| d d ƒS |tkrt| d d ƒS |tkr$t| d d ƒS |tkr0t| d d ƒS |tkr<t| d d ƒS |tkrHt| d d ƒS |tkrTt| d d ƒS |tkr\| d	 S |t	krd| d
 S |t
krl| d S | S )Ngê5‡µB¢ú>g      à?g²t±i¥0?g¢ÑÄÎd?g¦
F%uš?g¨ÆK7‰AÐ?ç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Úunit© r!   úG/home/ubuntu/.local/lib/python3.10/site-packages/imagesize/imagesize.pyÚ_convertToDPI#   s*   r#   c                 C   sÌ   t  d| ¡}|std|  ƒ‚| ¡ \}}|dkrt|ƒS |dkr(t|ƒd d S |dkr6t|ƒd d d S |d	kr@t|ƒd S |d
krLt|ƒd d S |dkrXt|ƒd d S |dkr`t|ƒS td| ƒ‚)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    r!   r!   r"   Ú_convertToPx;   s&   r4   c              	   C   s,	  d}d}t | tjƒr| }nt| dƒ}z}| d¡}t|ƒ}|dkrE|dd… dv rEzt d|dd… ¡\}}W nÑ tjyD   t	d	ƒ‚w |d
krr| 
d¡rr|dd… dkrrzt d|dd
… ¡\}}W n­ tjyq   t	dƒ‚w |dkr—| 
d¡r—zt d|dd… ¡\}}W n‘ tjy–   t	dƒ‚w |dkr| 
d¡rzj| d¡ d}d}d|  kr¶dkr¼n n|dv rù| |d¡ | d¡}t|ƒdkrØ| d¡}t|ƒdksÍt|ƒ}t d| d¡¡d d }d|  kródkr¼n q¼|dv s¼| dd¡ t d| d¡¡\}}W n tjtfy   t	dƒ‚w |dkrH| 
d¡rH| d¡ zt d| d¡¡\}}W nó tjyG   t	d ƒ‚w |dkrÚ| 
d!¡rÚt d"|dd… ¡d }| |¡ t d| d¡¡d }	t|	ƒD ]V}
t d#| d¡¡\}}}}|d$krŸ|d%kr“t|d& ƒ}n)|dkr›|}n!t	d'ƒ‚|d(kr¼|d%kr°t|d& ƒ}n|dkr¸|}nt	d)ƒ‚|dkrÈ|dkrÈ nqs|dksÔ|dkrØt	d*ƒ‚n]|dkrA| 
d+¡rAt d,|dd… ¡d }| |¡ t d-| d¡¡d }	t|	ƒD ]+}
t d.| d¡¡\}}}}|d$kr|}n|d(kr#|}|dkr/|dkr/ nq|dks;|dkr?t	d*ƒ‚nÿ|dkrÀ| 
d/¡rÀt d,|dd… ¡d }|dkrdt	d0 |¡ƒ‚t d1|dd… ¡d }| |¡ t d1| d¡¡d }	t|	ƒD ]+}
t d2| d3¡¡\}}}}|d$kr›|}n|d(kr¢|}|dkr®|dkr® nq„|dksº|dkr¾t	d4ƒ‚n‰|d5kr| 
d6¡sÑ| 
d7¡r| d¡ | d8¡}z| d9¡}t d:|¡ d¡}t d;|¡ d¡}W n ty    t	d<ƒ‚w t|ƒ}t|ƒ}nG|dd… d=kr…|dd… d>v r…| d¡ g }	 | d¡}| ¡ r1q$|d@kr:t	dAƒ‚|dBkrE| ¡  q$| ¡ sNt	dCƒ‚|}| d¡}| ¡ rh||7 }| d¡}| ¡ sZ| t|ƒ¡ t|ƒdkrwn	| dtj¡ q%|\}}nß| 
dD¡r[|dd… dEkrm|dd… dFkrªt dG|dHdI… ¡\}}nÌ|dd… dJkrÐt dK|d
dL… dM ¡d }t dK|dLdI… dM ¡d }n¯|dd… dNkr|dOdP… }|d dQ@ d> |d B d }|d% dR@ d> |d d> B |d d@ d? B d }n‚t	dSƒ‚W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS W | ¡  ||fS | ¡  w )Tz 
    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   123456Tó    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Úerrorr.   Ú
startswithÚseekÚordÚ	TypeErrorÚranger   ÚformatÚdecoder,   ÚsearchÚgroupÚ	Exceptionr4   Ú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Úbr!   r!   r"   ÚgetS   s¬  

ÿ"ÿÿ
 

ÿ úÿ
ÿ






€ÿ


€ÿ



€ÿ"


ÿ$









þä
2 á " â  é  û ƒ{a«S½AË3ðïðòõ	ù
þrƒ   c                 C   s˜  d}d}t | tƒst| ƒ} t| dƒ,}| d¡}t|ƒ}|dkr+|dd… dv r+nØ|dkr§| d¡r§d	}|d	d… }	 |dd	… }|dkruzt d|d	d… ¡\}	}
}W n tj	yb   t
dƒ‚w |rpt|	tƒ}t|
tƒ}n|	}|
}n0|dkrzn+zt d|dd… ¡\}W n tj	y“   t
dƒ‚w ||d 7 }| |¡ | d¡}q=nf|dkrE| d¡rEz…| d¡ d}d}d|  krÇdks6n |dkrú| dd¡ t d| d¡¡\}}	}
|dksæ|dkrë|	}|
}n|dkrùt|	tƒ}t|
tƒ}n<| |d¡ | d¡}t|ƒdkr| d¡}t|ƒdkst|ƒ}t d| d¡¡d d }d|  kr4dkrÈn qÈW né tj	yD   t
dƒ‚w |dkr| d ¡r+| d!¡ t d| d¡¡d d	 }| dd¡ d"}z†|dkr£| d	¡}|dd… }|d#kr‡d
}|d	8 }nt d|dd… ¡\}| |d	 d¡ ||8 }|dksp|rï|dkrï| d	¡}|dd… }|d$krÓt d%| d¡¡\}
}	}}t|	|ƒ}t|
|ƒ}nt d|dd… ¡\}| |d	 d¡ ||8 }|dks«W nD tj	y } zt
d&ƒ‚d}~ww W d  ƒ ||fS W d  ƒ ||fS W d  ƒ ||fS W d  ƒ ||fS W d  ƒ ||fS W d  ƒ ||fS 1 sCw   Y  ||fS )'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   r5   r8   r   Nr   r7   r9   r   Tr	   s   pHYsz>LLBr;   s   IDATrH   r   r   é   r   r<   r=   r>   éà   r   r   z>BHHr
   rB   rC   rD   rE   é    Fs   res s   resdz>HHBBrG   )rV   ÚbytesÚstrrY   rZ   r[   r_   r\   r]   r^   r.   r#   r   r`   r   ra   )rp   ÚxDPIÚyDPIrs   rt   ru   ÚchunkOffsetÚchunkÚ	chunkTypeÚxDensityÚyDensityr    ÚdataSizerv   rw   Ú
headerSizeÚfoundResBoxÚ	boxHeaderÚboxTypeÚboxSizeÚyUnitÚxUnitÚer!   r!   r"   ÚgetDPI  sò   

ÿ
ÿ

é€




ÿð€ÿ




÷






ö€€ÿ¬
ú\€
¤\á
Ã\€
¤\á
Ã\€
¤\¤\r™   )rW   rm   r,   r\   Ú	xml.etreer   r   r   r   r   r   r   r   r   r   r   Ú
_UNIT_INCHÚ_TIFF_TYPE_SIZESr#   r4   rƒ   r™   r!   r!   r!   r"   Ú<module>   sD    ô =