o
    Ni6                     @   s   d dl Z d dlZd dlZd dlZd dlmZ g dZd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)getgetDPI__version__z1.4.1                     )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 )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unit r$   =/home/ubuntu/.local/lib/python3.10/site-packages/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%   _convertToPxB   s&   r7   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rztd|dd \}}W n tjy   t	dw |dkr|
drzj|d d}d}d|  krdkrn n|dv r||d |d}t|dkr|d}t|dkst|}td|dd d }d|  krdkrn 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!rtd"|dd d }|| td|dd }	t|	D ]V}
td#|d\}}}}|d$kr|d%krt|d& }n)|dkr|}n!t	d'|d(kr|d%krt|d& }n|dkr|}nt	d)|dkr|dkr nqs|dks|dkrt	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/rt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rt	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rtdG|dHdI \}}n|dd dJkrt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 }nt	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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br$   r$   r%   r   Z   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rd	}|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rdks6n |dkr|dd td|d\}}	}
|dks|dkr|	}|
}n|dkrt|	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rn qW 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rd
}|d	8 }ntd|dd \}||d	 d ||8 }|dksp|r|dkr|d	}|dd }|d$krtd%|d\}
}	}}t|	|}t|
|}ntd|dd \}||d	 d ||8 }|dksW 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   r8   r;   r   Nr   r:   r<   r   Tr   s   pHYsz>LLBr>   s   IDATrK   r   r      r
   r?   r@   rA      r   r	   z>BHHr   rE   rF   rG   rH       Fs   res s   resdz>HHBBrJ   )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er$   r$   r%   r     s   






















\
\
\
\
\
\\r   )rZ   rp   r/   r_   	xml.etreer   __all__r   r   r   r   r   r   r   r   r   r    r!   
_UNIT_INCH_TIFF_TYPE_SIZESr&   r7   r   r   r$   r$   r$   r%   <module>   sH     =