
    ǁi0                     h    d dl Z d dlZddl ddlmZ ddl d dlmZ dZddZ	 G d d	e
      Zd
 Zy)    N   )*)InvalidImageDataError)_webp   IIc                 d   i i i i i dd}t        |       }|j                  |S |j                  dd t        k(  rd|_        nd|_        t	        j
                  |j                  dz   |j                  dd	       d   }|j                  |d
      |d
<   |d
   j                  d      }t        j                  |d
   v r+|d
   t        j                     }|j                  |d      |d<   t        j                  |d
   v r+|d
   t        j                     }|j                  |d      |d<   t        j                  |d   v r+|d   t        j                     }|j                  |d      |d<   |dk7  rt	        j
                  |j                  dz   |      d   }|j                  |d      |d<   t        j                  |d   v rjt        j                  |d   v rU|d   t        j                     |d   t        j                     z   }|j                  |d   t        j                     | }||d<   |rt        |      }|S )a  
    py:function:: piexif.load(filename)

    Return exif data as dict. Keys(IFD name), be contained, are "0th", "Exif", "GPS", "Interop", "1st", and "thumbnail". Without "thumbnail", the value is dict(tag name/tag value). "thumbnail" value is JPEG as bytes.

    :param str filename: JPEG or TIFF
    :return: Exif data({"0th":dict, "Exif":dict, "GPS":dict, "Interop":dict, "1st":dict, "thumbnail":bytes})
    :rtype: dict
    N)0thExifGPSInterop1st	thumbnailr      <>L      r	   first_ifd_pointerr
   r   r   s       r   r   )_ExifReadertiftagLITTLE_ENDIANendian_markstructunpackget_ifd_dictpopImageIFDExifTagGPSTagExifIFDInteroperabilityTagJPEGInterchangeFormatJPEGInterchangeFormatLength_get_key_name_dict)
input_datakey_is_name	exif_dict
exifReaderpointerr   endthumbs           V/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/piexif/_load.pyloadr.      sT    !#I Z(J 1.!$
!$
mmJ22S8&--a24457G!..w>Ie!%(,,-@A9U++E"8#3#34&33GVD	&)E**E"8??3%227EB	%""i&77F#G$?$?@)66w	J	)//--
 6 6 < 13346%227EB	%**i.>>00Ie4DDU#H$B$BCU#H$H$HIJC%%i&6x7U7U&VWZ[E%*Ik"&y1	    c                        e Zd Zd ZddZd Zy)r   c                    t         j                  dk\  xs t        |t              }|r3|dd dk(  r+t	        |      }t        |      }|r|dd  | _        y d | _        y |r|dd dv r|| _        y |r+|dd dk(  r#|d	d
 dk(  rt        j                  |      | _        y |r|dd dk(  r|dd  | _        y t        |d      5 }|j                  d      }d d d        dk(  r t        |      }|r|dd  | _        y d | _        y |dv r+t        |d      5 }|j                         | _        d d d        y t        |d      5 }|j                  d
      }d d d        dd dk(  rH|d	d
 dk(  r@t        |d      5 }|j                         }d d d        t        j                        | _        y t        d      # 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   |xY w# 1 sw Y   SxY w)N)   r   r   r   r   s   
   )r   s   MMr   s   RIFFr      s   WEBPs   Exif   rbz$Given file is neither JPEG nor TIFF.)sysversion_info
isinstancestrsplit_into_segmentsget_exif_segr   r   get_exifopenreadread_exif_from_filer   )	selfdatamaybe_imagesegmentsapp1fmagic_numberheader	file_datas	            r-   __init__z_ExifReader.__init__C   s   &&'1JZc5J4!93*40H)D"23i"T!AY*DDDKT!AY'1d1RjG6K...DKT!AY'1qr(DKdD! )Q vvay){**40"&rs)DK"&DK!;;$% +"#&&(DK+ + $% (VVBZF(!A;')VAb\W-DdD) -Q$%FFH	-"'..";DK/0VWW') )+ +( (- -s0   :F)	F54G*G)F25F>G
Gc                 @   i }t        j                  | j                  dz   | j                  ||dz          d   }|dz   }|dv rd}n|}g }t	        |      D ]$  }	|d|	z  z   }t        j                  | j                  dz   | j                  ||dz          d   }
t        j                  | j                  dz   | j                  |dz   |dz          d   }t        j                  | j                  dz   | j                  |dz   |d	z          d   }| j                  |d	z   |dz    }|j                  ||||f       ||||
f}|
t        |   v r| j                  |      ||
<   |s	|d   |d
   |d   | j                  f||
<   ' |dk(  r|d|z  z   }| j                  ||dz    |d<   |S )NHr   r   )r	   r   Imager4   r   r   r   r   r	   r   )r   r   r   r   rangeappendTAGSconvert_value)rA   r*   ifd_nameread_unknownifd_dict	tag_countoffsettp_and_valuextag
value_type	value_numvaluev_sets                  r-   r   z_ExifReader.get_ifd_dictj   s   MM$"2"2S"8"&++gwqy"ACCDF	1~%AAy! 	LArAvoG-- 0 03 6{{7GAI6889;Ct'7'7#'=Wq['A+>@@ACJd&6&6&<&*kk'A+w{&K(()+I KK	72:6EYFGE37Ed1g~ $ 2 25 9!&q58U1Xt{{ K	L& urI~-G,0KK!,LH()r/   c                     d }|d   }|d   }|d   }|t         j                  k(  rt|dkD  rQt        j                   j                  dz   |      d   t        j                  d|z   j
                  |z          }nt        j                  d|z  |d|       }n|t         j                  k(  rL|dkD  r=t        j                   j                  dz   |      d    j
                  |z   dz
   }nS|d|dz
   }nI|t         j                  k(  r|dkD  rat        j                   j                  dz   |      d   t        j                   j                  d|z  z    j
                  |dz  z          }nt        j                   j                  d|z  z   |d|dz         }n|t         j                  k(  r|dkD  rat        j                   j                  dz   |      d   t        j                   j                  d|z  z    j
                  |dz  z          }n)t        j                   j                  d|z  z   |      }n|t         j                  k(  rt        j                   j                  dz   |      d   |dkD  r t         fdt        |      D              }nt        j                   j                  dz    j
                  dz          d   t        j                   j                  dz    j
                  dz   d	z          d   f}n2|t         j                  k(  rt|dkD  rQt        j                   j                  dz   |      d   t        j                  d
|z   j
                  |z          }nt        j                  d
|z  |d|       }n|t         j                  k(  rF|dkD  r:t        j                   j                  dz   |      d    j
                  |z    }nY|d| }nR|t         j                  k(  r|dkD  rat        j                   j                  dz   |      d   t        j                   j                  d|z  z    j
                  |dz  z          }nt        j                   j                  d|z  z   |d|dz         }n|t         j                  k(  r|dkD  rat        j                   j                  dz   |      d   t        j                   j                  d|z  z    j
                  |dz  z          }n2t        j                   j                  d|z  z   |      }n
|t         j                   k(  rt        j                   j                  dz   |      d   |dkD  r t         fdt        |      D              }nt        j                   j                  dz    j
                  dz          d   t        j                   j                  dz    j
                  dz   d	z          d   f}n;|t         j"                  k(  r|dkD  r`t        j                   j                  dz   |      d   t        j                   j                  d|z  z    j
                  |dz  z          }nt        j                   j                  d|z  z   |      }n|t         j$                  k(  r`t        j                   j                  dz   |      d   t        j                   j                  d|z  z    j
                  |d	z  z          }n)t'        dt)        |d         z   dz   t)        |      z         t+        |t              rt-        |      dk(  r|d   S |S )Nr   r   r   r   r   BrL   c           
   3   ,  K   | ]  }t        j                  j                  d z   j                  |dz  z   dz   |dz  z          d   t        j                  j                  d z   j                  dz   |dz  z   dz   |dz  z          d   f  yw)r   r   r   r   Nr   r   r   r   .0rY   r*   rA   s     r-   	<genexpr>z,_ExifReader.convert_value.<locals>.<genexpr>   s        ]]4#3#3c#9#';;wQ'.{QU':$<==>@ ]]4#3#3c#9#';;w{QU/B'.{QU':$<==>@A   BBr   bhlc           
   3   ,  K   | ]  }t        j                  j                  d z   j                  |dz  z   dz   |dz  z          d   t        j                  j                  d z   j                  dz   |dz  z   dz   |dz  z          d   f  yw)ri   r   r   r   Nrb   rc   s     r-   re   z,_ExifReader.convert_value.<locals>.<genexpr>   s      
 	 ==!1!1C!7;;wQ!a!e0CDFFGI==!1!1C!7;;w{QU2GaK!a%4GHJJKMNrf   rF   dz>Exif might be wrong. Got incorrect value type to decode.
tag: r2   z
type: )TYPESByter   r   r   r   AsciiShortLongRationaltuplerN   SByte	UndefinedSShortSLong	SRationalFloatDFloat
ValueErrorr:   r9   len)rA   valrB   rW   lengthr]   r*   s   `     @r-   rQ   z_ExifReader.convert_value   s   FQA

?z --(8(83(>FqI}}S6\%)[['F:J%KM }}S6\56?C%++z --(8(83(>FqI{{7GFNQ,>?Q
+%++z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*1VaZ%8:%**_z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*,%.. mmD$4$4s$:EB1EGz  #6]  d&6&6&<&*kk'7Q;&GIIJLd&6&6&<&*kk'A+w{&K(()+,
 %++z --(8(83(>FqI}}S6\%)[['F:J%KM }}S6\56?C%//!z --(8(83(>FqI{{7GFN;Qv%,,z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*1VaZ%8:%++z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*,%//!mmD$4$4s$:EB1EGz 
 !=  d&6&6&<&*kk'7Q;&GIIJLd&6&6&<&*kk'A+w{&K(()+,
 %++z --(8(83(>FqI}}T%5%5f%D%)[['&(:J%KM }}T%5%5f%D%*,%,,mmD$4$4s$:EB1EG==!1!1C&L!@$(KK9I$JLD  %'*3q6{35?@BEa&I J J dE"D	Q7NKr/   NF)__name__
__module____qualname__rJ   r   rQ    r/   r-   r   r   B   s    %XN Dvr/   r   c           
      N   | d   j                         D ci c]  \  }}t        d   |   d   | c}}| d   j                         D ci c]  \  }}t        d   |   d   | c}}| d   j                         D ci c]  \  }}t        d   |   d   | c}}| d   j                         D ci c]  \  }}t        d   |   d   | c}}| d   j                         D ci c]  \  }}t        d   |   d   | c}}| d   d	}|S c c}}w c c}}w c c}}w c c}}w c c}}w )
Nr	   rM   namer
   r   r   r   r   )r	   r
   r   r   r   r   )itemsrP   )r(   nr]   new_dicts       r-   r%   r%     s'   >G>N>T>T>VW(!UtG}Q'-W>G>O>U>U>WX(!UVQ'-X>G>N>T>T>VW(!UtG}Q'-W<Ee<L<R<R<TU5tE{1~f%e+UDMiDXD^D^D`a54	?1%f-e3ak*H O XXWUas   D	
D=D
0D#D!r~   )r   r7   _common_exceptionsr   _exifpiexifr   r   r.   objectr   r%   r   r/   r-   <module>r      s6     
  .  3l@& @F	r/   