o
    j%                     @  s   d dl mZ d dlmZ d dlmZ ddlmZmZ ddl	m
Z ddl	mZ dd	d
ZdddZG dd dejZeeje eejd dddZdS )    )annotations)BytesIO)cast   )Image	ImageFile)i16be)i32berawZjpeg)r      cbytesreturnintc                 C  s   t d|  dd  S )Ns       )i32)r    r   T/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py_i!   s   r   c                   @  s<   e Zd ZdZdZdddZdd
dZdddZdddZdS )IptcImageFileZIPTCzIPTC/NAAkeytuple[int, int]r   r   c                 C  s   t | j| S )N)r   info)selfr   r   r   r   getint.   s   zIptcImageFile.getint"tuple[tuple[int, int] | None, int]c                 C  s   | j d usJ | j d}|dsdS |d |d f}|d dks(|d dvr.d	}t||d
 }|dkr<d}t||dkrFd}||fS |dkrXt| j |d }||fS t|d
}||fS )Nr       )Nr   r      r      )
r   r         r            	      zinvalid IPTC/NAA filer      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr   i16)r   stagmsgsizer   r   r   field1   s(   

zIptcImageFile.fieldNonec              
   C  s  | j d usJ 	 | j  }|  \}}|r|dkrn2|r#| j |}nd }|| jv rFt| j| tr;| j| | n| j| |g| j|< n|| j|< q| jd d }| jd d }|dkrf|sfd| _d }n$|dkrp|rpd| _n	|d	kry|ryd
| _d| jv r| jd d d }nd}| 	d| 	df| _
z	t| 	d }W n ty }	 zd}
t|
|	d }	~	ww |dkrtdd| j |||fg| _d S d S )NTr#   
   )r   <   r   r   Lr   RGBr    ZCMYK)r   A   )r      )r      )r   x   zUnknown IPTC image compressionZiptc)r   r   )r(   tellr2   r)   r   
isinstancelistappend_moder   _sizeCOMPRESSIONKeyErrorr,   r   Z_Tiler1   tile)r   offsetr/   r1   ZtagdataZlayers	componentbandcompressioner0   r   r   r   _openN   sN   





zIptcImageFile._openImage.core.PixelAccess | Nonec                 C  sL  | j r| j d j}t|tsJ |\}}| jd usJ | j| j d j t }|dkr4|d| j	  	 | 
 \}}|dkr@n |dkr_| jt|d}|sPn|| |t|8 }|dksDq5t|0}|d urtd|j	gt| j }	||	|< t| j|	}
n|}
|
  |
j| _W d    n1 sw   Y  g | _ tj| S )Nr   r
   s   P5
%d %d
255
Tr4   i    r7   )rE   argsr>   tupler(   seekrF   r   writer1   r2   r)   minlenr   opennewZgetmodebandsmodemergeloadimr   )r   rM   rI   rH   otyper1   r.   Z_imZbandsrX   r   r   r   rW      s@   

	zIptcImageFile.loadN)r   r   r   r   )r   r   )r   r3   )r   rL   )	__name__
__module____qualname__formatformat_descriptionr   r2   rK   rW   r   r   r   r   r   *   s    


4r   z.iimrX   ImageFile.ImageFile1dict[tuple[int, int], bytes | list[bytes]] | Nonec              	   C  s  ddl m}m} d}t| trdd | j D S t| |jr-| jd}|r,|d}nt| |j	rFz	| j
j|j }W n	 tyE   Y nw |du rLdS G dd	 d	}| }t|_tt|}i |_t||_z|  W n ttfyw   Y nw d
d |j D S )z
    Get IPTC information from TIFF, JPEG, or IPTC file.

    :param im: An image containing IPTC data.
    :returns: A dictionary containing IPTC information, or None if
        no IPTC information block was found.
    r   )JpegImagePluginTiffImagePluginNc                 S      i | ]\}}t |tr||qS r   r>   rN   .0kvr   r   r   
<dictcomp>        zgetiptcinfo.<locals>.<dictcomp>	photoshopi  c                   @  s   e Zd ZdS )zgetiptcinfo.<locals>.FakeImageN)r[   r\   r]   r   r   r   r   	FakeImage   s    rm   c                 S  rd   r   re   rf   r   r   r   rj      rk   ) rb   rc   r>   r   r   itemsZJpegImageFilegetZTiffImageFileZtag_v2Z_tagdataZIPTC_NAA_CHUNKrD   	__class__r   r   r(   rK   
IndexError)rX   rb   rc   datarl   rm   Zfake_imZiptc_imr   r   r   getiptcinfo   s:   




rt   N)r   r   r   r   )rX   r`   r   ra   )
__future__r   ior   typingr   rn   r   r   _binaryr   r-   r	   r   rC   r   r   Zregister_openr^   Zregister_extensionrt   r   r   r   r   <module>   s   

	